Parece que não consigo subtrair 7 dias da data atual. É assim que estou fazendo:
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:-7];
NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];
SevenDaysAgo obtém o mesmo valor da data atual.
Por favor ajude.
EDIT: No meu código esqueci de substituir a variável que obtém a data atual com a correta. Portanto, o código acima é funcional.
objective-c
ios
nsdate
Alex Tau
fonte
fonte
[NSDate dateWithTimeIntervalSinceReferenceDate:[NSDate date].timeIntervalSinceReferenceDate - (7*24*60*60)]
- Embora não lide com alterações de horário de verão.Respostas:
use o método dateByAddingTimeInterval:
resultado:
Espero que ajude
fonte
[now dateByAddingDays:-7]
código:
resultado:
E estou totalmente de acordo com JeremyP.
BR.
Eugene
fonte
Se você estiver executando pelo menos iOS 8 ou OS X 10.9, há uma maneira ainda mais limpa:
Ou, com Swift 2:
E com o Swift 3 e superior, ele fica ainda mais compacto:
fonte
Swift 3
fonte
Swift 4.2 - Mutate (Atualizar) Self
Esta é outra maneira que o postador original pode obter uma semana atrás, se ele já tiver uma variável de data (se atualiza / muda).
Uso
ou
fonte
A resposta de dymv funciona muito bem. Isso você pode usar rapidamente
Você pode ligar para isso com
Espero que ajude e obrigado dymv
fonte
Swift 4.2 iOS 11.x Solução da Babec , Swift puro
fonte
Extensão do operador Swift:
Uso
fonte
Versão do Swift 3.0+ da resposta original aceita
Date (). AddTimeInterval (-7 * 24 * 60 * 60)
No entanto, isso usa apenas valores absolutos. Usar respostas de calendário é provavelmente mais adequado na maioria dos casos.
fonte
Swift 3:
Uma modificação na resposta de Dov.
Uso:
fonte
numberOfDays
opcional e então desembrulhado à força? Não deveria ser apenas não opcionalInt
?PARA SWIFT 3.0
aqui está a função, você pode reduzir dias, mês, dia por qualquer contagem como por exemplo aqui, eu reduzi o ano da data do sistema atual em 100 anos, você pode fazer isso para dia, mês também basta definir o contador e armazená-lo em um array, você pode usar este array em qualquer lugar, então func currentTime ()
fonte