Wygląda na to, że nie mogę odjąć 7 dni od aktualnej daty. Oto jak to robię:
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 otrzymuje tę samą wartość, co bieżąca data.
Proszę pomóż.
EDYCJA: W moim kodzie zapomniałem zamienić zmienną, która pobiera aktualną datę, na właściwą. Więc powyższy kod działa.
objective-c
ios
nsdate
Alex Tau
źródło
źródło
[NSDate dateWithTimeIntervalSinceReferenceDate:[NSDate date].timeIntervalSinceReferenceDate - (7*24*60*60)]
- Chociaż nie obsługuje zmian czasu letniego.Odpowiedzi:
użyj metody dateByAddingTimeInterval:
wynik:
Mam nadzieję, że to pomoże
źródło
[now dateByAddingDays:-7]
kod:
wynik:
W pełni zgadzam się z JeremyPem.
BR.
Eugene
źródło
Jeśli masz co najmniej iOS 8 lub OS X 10.9, istnieje jeszcze prostszy sposób:
Lub w przypadku Swift 2:
A dzięki Swift 3 i nowszym jest jeszcze bardziej kompaktowy:
źródło
Szybki 3
źródło
Swift 4.2 - Mutacja (aktualizacja) siebie
Oto inny sposób, w jaki oryginalny plakat może dostać się tydzień temu, jeśli ma już zmienną daty (aktualizuje / mutuje się).
Stosowanie
lub
źródło
Odpowiedź dymv działa świetnie. Możesz to szybko wykorzystać
Możesz to nazwać za pomocą
Mam nadzieję, że to pomoże i dziękuję dymv
źródło
Swift 4.2 iOS 11.x Rozwiązanie Babeca , czysty Swift
źródło
Szybkie rozszerzenie operatora:
Stosowanie
źródło
Wersja Swift 3.0+ oryginalnej zaakceptowanej odpowiedzi
Date (). AddedTimeInterval (-7 * 24 * 60 * 60)
Jednak używa to tylko wartości bezwzględnych. W większości przypadków bardziej odpowiednie jest użycie odpowiedzi z kalendarza.
źródło
Swift 3:
Modyfikacja odpowiedzi Dova.
Stosowanie:
źródło
numberOfDays
opcjonalne, a następnie rozpakowane na siłę? Czy nie powinno to być po prostu nieobowiązkoweInt
?DLA SWIFT 3.0
tu jest funkcja, możesz zredukować dni, miesiąc, dzień dowolną liczbą, jak na przykład tutaj, zmniejszyłem rok bieżącej daty systemowej o 100 lat, możesz to zrobić dla dnia, miesiąca również po prostu ustaw licznik i przechowuj go w tablica, możesz tę tablicę w dowolnym miejscu, a następnie func currentTime ()
źródło