我执行以下代码片段:
NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
[comp setDay:1];
NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];
firstDayOfMonthDate的值是= 30-4-2011但是删除是1-5-2011,即我想要任何指定日期的第一个月份日期。 但它给了我上个月的最后日期。
提前感谢。
答案 0 :(得分:10)
添加
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
初始化NSCalendar后。
[NSDate date]
将返回UTC时区的日期,以及自2001年1月1日00:00 GMT以来的绝对间隔,但NSCalendar的timeZone设置为默认时区,可能不是UTC。
UTC与UTC“相同”,来自维基百科:
在临时使用中,当分数为a 第二个并不重要,格林威治 可以考虑平均时间(GMT) 相当于UTC或UT1。说“GMT” 通常暗示UTC或UT1时 用于非正式或休闲 上下文。在技术背景下,用法 避免“GMT”;毫不含糊 术语“UTC”或“UT1”是 优选的。[3]