为什么NSCalendar的dateFromComponents返回错误的日期?
问题描述:
我期待2010-10-11 00:00:00为什么NSCalendar的dateFromComponents返回错误的日期?
而是我收到2010-10-10 21:00:00 +0000
我知道,我可以添加了几个小时,收到期望的日期,但我不明白为什么我前一天有21个小时...
请帮忙!
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2010];
[comps setMonth:10];
[comps setDay:11];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *retDate = [cal dateFromComponents:comps];
答
我认为你的问题可以通过设置NSTimeZone
来解决。
答
如果您需要特定的时间格式,请使用该格式化程序,或者写下此信息以获取正确的时间。第一个选项...
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let localDate = formatter.dateFromString("1989-10-17T05:00:00.000-0000")
,或者如果你的组件需要使用日期下面的代码一样......
let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(name: "GMT")!
let date = calendar.dateFromComponents(components)
,或者您需要
是的,你是对的! \t [cal setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@“GMT”]];解决了这个问题 – 2010-12-01 09:16:10