Il semble que je ne peux pas soustraire 7 jours de la date actuelle. Voici comment je fais:
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 obtient la même valeur que la date actuelle.
Veuillez aider.
EDIT: Dans mon code, j'ai oublié de remplacer la variable qui obtient la date actuelle par la bonne. Le code ci-dessus est donc fonctionnel.
objective-c
ios
nsdate
Alex Tau
la source
la source
[NSDate dateWithTimeIntervalSinceReferenceDate:[NSDate date].timeIntervalSinceReferenceDate - (7*24*60*60)]
- Bien qu'il ne gère pas les changements d'heure d'été.Réponses:
utilisez la méthode dateByAddingTimeInterval:
production:
J'espère que ça aide
la source
[now dateByAddingDays:-7]
code:
production:
Et je suis entièrement d'accord avec JeremyP.
BR.
Eugène
la source
Si vous utilisez au moins iOS 8 ou OS X 10.9, il existe un moyen encore plus propre:
Ou, avec Swift 2:
Et avec Swift 3 et plus, il devient encore plus compact:
la source
Swift 3
la source
Swift 4.2 - Mutation (mise à jour) Self
Voici une autre façon dont l'affiche d'origine peut obtenir il y a une semaine s'il a déjà une variable de date (se met à jour / se mute).
Usage
ou
la source
La réponse de dymv fonctionne très bien. Vous pouvez l'utiliser rapidement
Vous pouvez appeler ça avec
J'espère que ça aide et merci de dymv
la source
Swift 4.2 iOS 11.x La solution Babec , pure Swift
la source
Extension opérateur Swift:
Usage
la source
Version Swift 3.0+ de la réponse initiale acceptée
Date (). AjoutantTimeInterval (-7 * 24 * 60 * 60)
Cependant, cela n'utilise que des valeurs absolues. Utiliser des réponses de calendrier est probablement plus approprié dans la plupart des cas.
la source
Swift 3:
Une modification de la réponse de Dov.
Usage:
la source
numberOfDays
facultatif puis déballé de force? Ne devrait-il pas être simplement non facultatifInt
?POUR SWIFT 3.0
voici la fonction, vous pouvez réduire les jours, les mois, les jours de n'importe quel nombre, comme par exemple ici, j'ai réduit l'année de la date système actuelle de 100 ans, vous pouvez le faire pour le jour, le mois, il suffit de définir le compteur et de le stocker dans un array, vous pouvez ce tableau n'importe où puis func currentTime ()
la source