1
在我的iOS應用程序中,我必須根據當前日期創建一週。NSDateComponents在2012年的第一週表現得很奇怪
這是一段代碼:
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:year];
[components setWeek:week];
[components setWeekday:2];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:components];
在這種特殊情況下的一年是2012年和一週爲1。我希望日曆返回2012-01-02,因爲這是日期2012年1月1日星期一。但相反,它返回2012-12-30。
更新了時區:
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2012];
[components setWeek:1];
[components setWeekday:2];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone localTimeZone]];
NSDate *date = [gregorian dateFromComponents:components];
仍然返回2012-12-30。
除了2012年的第一個星期,它還是完美的。 – hufkens 2012-01-05 10:29:03
@hufkens我認爲結果日期是2012-01-02當地方應用時區。你的結果是什麼? – tia 2012-01-05 11:46:55
無論我將其添加爲時區,它總是會返回2012-12-30。我嘗試過:[格里高利setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@「GMT」]];或[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@「CET」]];或[gregorian setTimeZone:[NSTimeZone localTimeZone]]; – hufkens 2012-01-05 15:30:15