NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int numberOfDays = secondsBetween / 86400;
NSLog(@"There are %d days in between the two dates.", numberOfDays);
EDITAR:
Lembre-se de que os NSDate
objetos representam momentos exatos de tempo, eles não têm nenhuma informação de fuso horário associada. Quando você converte uma string em uma data usando, por exemplo NSDateFormatter
, um , o NSDateFormatter
converte a hora do fuso horário configurado. Portanto, o número de segundos entre dois NSDate
objetos sempre será independente do fuso horário.
Além disso, esta documentação especifica que a implementação do tempo do Cocoa não leva em conta os segundos bissextos, portanto, se você precisar de tal precisão, precisará fazer sua própria implementação.
cocoa
e não,cocoa-touch
portanto, esta resposta se aplica apenas ao Mac OS X.Você pode querer usar algo assim:
Acredito que esse método é responsável por situações como datas que abrangem uma mudança no horário de verão.
fonte
NSDate
objetos já são agnósticos de fuso horário. As informações de fuso horário são removidas ao analisar datas comNSDateFormatter
, por exemplo , para que osNSDate
objetos representem momentos exatos no tempo. Portanto, se você já tiverstartDate
eendDate
, esses dois objetos terão um intervalo de x segundos. Os fusos horários não terão nada a ver com isso.onde
date1
edate2
estãoNSDate
.Além disso, observe a definição de
NSTimeInterval
:fonte
Verifique isso. Ele cuida do horário de verão, ano bissexto, pois usa o calendário iOS para calcular. Você pode alterar a string e as condições para incluir minutos com horas e dias.
fonte
Com o Swift 5 e iOS 12, de acordo com suas necessidades, você pode usar uma das duas maneiras a seguir para encontrar a diferença entre duas datas em dias.
# 1. Usando
Calendar
odateComponents(_:from:to:)
método de# 2. Usando
DateComponentsFormatter
ostring(from:to:)
método defonte
Swift 4
Experimente e veja (intervalo de datas com String):
Swift 3
fonte
Você pode encontrar a diferença convertendo a data em segundos e tomar o intervalo de tempo desde 1970 para isso e então você pode encontrar a diferença entre duas datas.
fonte
Para encontrar a diferença, você precisa obter a data atual e a data futura. No caso a seguir, usei 2 dias como um exemplo da data futura. Calculado por:
2 days
*24 hours
*60 minutes
*60 seconds
. Esperamos que o número de segundos em 2 dias seja de 172.800.fonte