5

我期待 2010-10-11 00:00:00

但相反,我收到 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];
4

2 回答 2

15

我认为您的问题可以通过设置NSTimeZone.

于 2010-12-01T09:10:55.070 回答
0

如果您需要特定的时间格式,请使用该格式器,或者编写此格式以获得正确的时间。第一个选项...

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)

或者你需要

于 2016-06-28T07:59:53.743 回答