Zasadniczo, jak mówi tytuł. Zastanawiam się, jak mogę dodać 1 dzień do NSDate
.
Gdyby to było:
21st February 2011
Stałoby się:
22nd February 2011
Lub gdyby to było:
31st December 2011
Stałoby się:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Andrzej
źródło
źródło
Odpowiedzi:
Swift 5.0:
Cel C :
To powinno być oczywiste.
źródło
dateByAddingComponents
połączenia naNSCalendarOptions(rawValue: 0)
Od iOS 8 możesz używać
NSCalendar.dateByAddingUnit
Przykład w Swift 1.x:
Swift 2.0:
Swift 3.0:
źródło
date.add(.days, 1)
? * idzie i buduje rozszerzenieextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
WykorzystanieDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Zaktualizowano dla Swift 5
Cel C
źródło
iOS 8+, OSX 10.9+, Objective-C
źródło
Działający realizacja Swift 3+ podstawie highmaintenance za odpowiedź i vikingosegundo w komentarzu. To rozszerzenie daty ma również dodatkowe opcje zmiany roku, miesiąca i godziny:
Zastosowanie tylko dodania dnia, o które prosi OP, to:
źródło
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
dodawał alternatywne rozwiązanie do mojej odpowiedzi . Dzięki za sugestię, @vikingosegundo!Swift 4.0 (tak samo jak Swift 3.0 w tej wspaniałej odpowiedzi , wyjaśniając tylko początkującym, takim jak ja)
źródło
Użyj poniższej funkcji i użyj parametru dni, aby uzyskać datę dni przed / dni Za pomocą parametru podaj wartość dodatnią dla przyszłej daty lub ujemną dla poprzednich dat:
źródło
W szybkim tempie
źródło
To jest praca!
źródło
Bardzo prosta implementacja Swift 3.0 to:
źródło
źródło
Swift 4.0
Stosowanie
Uwaga: jeśli nie wiesz, dlaczego wiersze kodu kończą się wykrzyknikiem, poszukaj „Swift Optionals” w Google.
źródło
Możesz użyć metody NSDate
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
gdzieseconds
byłaby60 * 60 * 24 = 86400
źródło
W Swift 2.1.1 i xcode 7.1 OSX 10.10.5 można dodawać dowolną liczbę dni do przodu i do tyłu za pomocą funkcji
wywołanie funkcji w celu zwiększenia bieżącej daty o 9 dni
wywołanie funkcji zmniejszenia bieżącej daty o 80 dni
źródło
Oto metoda ogólnego zastosowania, która pozwala dodawać / odejmować dowolny typ jednostki (rok / miesiąc / dzień / godzina / sekunda itp.) W określonym dniu.
Korzystanie z Swift 2.2
źródło
Ok - myślałem, że to zadziała dla mnie. Jeśli jednak użyjesz go, aby dodać dzień do 31 marca 2013 r., Zwróci datę, do której dodano tylko 23 godziny. Może faktycznie mieć 24, ale użycie w obliczeniach ma tylko 23:00 godzin dodanych.
Podobnie, jeśli przejdziesz do 28 października 2013 r., Kod doda 25 godzin, w wyniku czego data i godzina 2013-10-28 01:00:00.
Aby dodać dzień, robiłem to na górze, dodając:
Skomplikowane, głównie ze względu na czas letni.
źródło
60*60*24 + 1
powodu sekund przestępnych. daty muszą obejmować to wszystko, i dlatego obchodzenie się z kakao jest naprawdę świetne!źródło
W trybie szybkim możesz zrobić rozszerzenie, aby dodać metodę w NSDate
możesz użyć tego jako
źródło
Aktualizacja dla Swift 4:
źródło
dla szybkiego 2.2:
Mam nadzieję, że to komuś pomoże!
źródło
Swift 4, jeśli wszystko, czego naprawdę potrzebujesz, to 24-godzinna zmiana (60 * 60 * 24 sekundy), a nie „1 dzień kalendarzowy”
Przyszłość:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Przeszłość:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
źródło
aktualizacja do szybkiego 5
źródło
źródło
Miałem ten sam problem; użyj rozszerzenia dla NSDate:
źródło
Swift 2.0
źródło
W swift 4 lub swift 5 możesz użyć jak poniżej:
wynik:
źródło
Rozszerzenie ciągu: Konwertuj String_Date> Date
Rozszerzenie daty: Konwertuj datę> Ciąg
Rozszerzenie daty: Uzyskaj datę +/-
Stosowanie:
referencja: z wielu pytań
Jak dodać 1 dzień do NSDate?
funkcja matematyki do konwersji dodatniej int na ujemną i ujemną na dodatnią?
Konwertowanie NSString na NSDate (iz powrotem)
źródło
Użyj następującego kodu:
Tak jak
jest teraz przestarzałe
źródło