Wie man NSDate für 00:00 Uhr am Tag der [NSDate date]?
Ich brauche, um ein NSDate-Objekt für 00:00(Beginn des Tages) von [NSDate date], sagen wir mal, wenn der aktuell ist es 11:30 Uhr(zurückgegeben von [NSDate date]), auf 01/06/2012, jetzt muss ich ein NSDate für 00:00 Uhr auf 01/06/2012.
Habe ich noch nicht ausprobiert, aber was in meinem Kopf ist:
NSDate *now = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now];
[components setHour:0];
[components setMinute:0];
[components setSecond:0];
NSDate *morningStart = [calendar dateFromComponents:components];
So bekomme ich als erstes aktuelle Datum(sagen, es ist 01/06/2012), und konstruieren eine NSDateComponent für das Datum, dann setze ich Stunde/minute/Sekunde auf 0 und das Jahr/Monat/Tag sollte nicht geändert werden(ie. 01/06/2012), dann erstelle ich ein NSDate für diese Komponente festlegen und kann ich ein Datum von 00:00:00 01/06/2012?
- Überprüfen Sie die Antwort von poozolax. Es ist viel besser und es ist 100% richtig!!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tut, richtig ist, aber wenn Sie NSLog morningStart wird das Datum angezeigt, in der GMT-Zeitzone
Wenn Sie wollen, stellen Sie sicher, dass das Datum korrekt ist, wandeln Sie es in NSString
Umwandlung von NSDate zu NSString kann hilfreich sein, aber wenn Sie benötigen, um ein NSDate-Objekt für die weitere Verarbeitung, hier ist Ihre Lösung, um Ihre echte morningStart NSDate-Objekt eingestellt auf 00:00:00 Zeit, mit der Pflege der Zeitzone so gut... Wie Sie sehen werden, waren Sie nicht so weit von der Lösung :
Ist es sehr einfach, dies zu tun in iOS8 mit
startOfDayForDate
:ODER Sie können es tun, in der traditionellen Weise in Swift wie folgt:
(Hinweis: NSDates gespeichert sind, die relativ zu GMT. So
print
zeigt die relative lokale Zeit. Ein klares Verständnis von TimeZone ist von zentraler Bedeutung, um mit NSDates richtig.)