下面的代码
NSCalendar *cal = [NSCalendar currentCalendar];
[cal setFirstWeekday:2];
[cal setMinimumDaysInFirstWeek:4];
NSDateComponents *comp = [[NSDateComponents alloc] init];
[comp setYear: 2012];
[comp setMonth:3];
[comp setDay: 12];
NSDate *date = [cal dateFromComponents:comp];
NSLog(@"date:%@",date);
日志:
date:2012-03-11 23:00:00 +0000
任何想法,为什么会发生这种情况以及如何避免 发送
最佳答案
我假设您在本地使用 CET 时区。这就是 [NSCalendar currentCalendar]
将用作时区的内容。
当您使用 NSLog 转储 NSDate
时,您将获得原始 UTC 格式的日期。要使用本地格式打印日期,请查看 NSDateFormatter
类,它有一个 timeZone
属性:
....
NSDate *date = [cal dateFromComponents:comp];
NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
fmt.timeZone = [NSTimeZone defaultTimeZone]; // Probably not required
NSLog(@"date:%@", [fmt stringFromDate:date]);
关于objective-c - dateFromComponents : 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9751249/