Moja aplikacja użyła funkcji [Data NSD], aby uzyskać aktualną datę. Jego działanie dobrze inne dni oprócz 1 każdego miesiąca podczas AM. tj. Wykonaj następujące kroki:NSDate zwraca niewłaściwą datę pierwszego dnia miesiąca
- Ustaw datę systemową jako 01 - czerwiec - 2011 & czas między 00.00 północy a 5,59 AM.
- użyć poniższy kod:
NSLog(@"Current Date :: %@",[NSDate date]);
O/P :: Aktualna data :: 2011-05-31 19:40:21 +0000
Pożądany O/P is :: Bieżąca data :: 2011-06-01 00: 00: 0 (ustawiony czas) +0000
Również od 6 AM to działa dobrze.
Jaki jest tego powód?
Właściwie nie chcę NSDate w formacie ciąg, ale to, czego chcę, to obiekt daty NSDate odpowiadający pierwszej dacie bieżącego miesiąca. Do korzystania z poniższego fragmentu kodu:
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit
| NSDayCalendarUnit) fromDate:[NSDatedate]];
[comp setDay:1];
NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];
[gregorian release];
return firstDayOfMonthDate;
Ponieważ [Data NSDate] zwraca nieprawidłową datę, komponenty zawierają również niepoprawną datę. Powyższy kod działa dla wszystkich senario z wyjątkiem senario, który napisałem na początku tego wątku. Co powinienem zrobić?
Biorąc pod uwagę te informacje, nie mogę wymyślić powodu, dlaczego tak powinno być. Być może jest to błąd? –