【发布时间】:2011-09-29 14:26:50
【问题描述】:
我的应用程序使用 [NSDate date ] 函数来获取当前日期。除了每个月的第一天上午之外,它的其他日子都可以正常工作。即按照以下步骤:
- 将系统日期设置为 2011 年 6 月 1 日和午夜 00:00 到凌晨 5.59 之间的时间。
- 使用以下代码:
NSLog(@"Current Date :: %@",[NSDate date]);
O/P 是 :: 当前日期 :: 2011-05-31 19:40:21 +0000
Desired O/P is :: 当前日期 :: 2011-06-01 00:00:0(即设置的时间)+0000
从 早上 6 点开始 也可以正常工作。
这是什么原因?
实际上我不希望 NSDate 采用字符串格式,但我想要的是与当前月份的第一个日期相对应的 NSDate 日期对象。为此,我使用以下 sn-p 代码:
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;
由于 [NSDate date] 返回错误的日期,组件也包含错误的日期。上面的代码适用于所有 senario,除了我在这个线程开头发布的 senario。我该怎么办?
【问题讨论】:
-
鉴于这些信息,我想不出为什么会这样。也许它是一个错误?