开发者

iOS NSDateformatter issue - dateFromString does not work properly as expected

开发者 https://www.devze.com 2023-04-06 23:47 出处:网络
The following snippet开发者_开发问答 will give an unexpected output: Snippet: NSString* testDateStr = [[NSString alloc] initWithString:@\"2010-04-04 19:11:11\"];

The following snippet开发者_开发问答 will give an unexpected output:

Snippet:

    NSString* testDateStr = [[NSString alloc] initWithString:@"2010-04-04 19:11:11"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSLog(@"'%@'", testDateStr);
    NSLog(@"'%@'", [dateFormatter dateFromString:testDateStr]);

Output:

'2010-04-04 19:11:11'

'2010-04-04 09:11:11 +0000'

Notice the time hour in date produced is wrong. Is there anything I am doing wrong here?


NSDateFormatter defaults to the local timezone. When you print the description of the NSDate object, it prints in GMT (notice the +0000 at the end). This code is working exactly as expected. (19:11:11 in your local timezone is the same as 09:11:11 in GMT.)

You can always override the timezone of the NSDateFormatter by calling setTimeZone:.


The output is not wrong: It looks like you are running in a locale with a GMT + 10 timezone. 19:11:11 in your local timezone is equivalent to 09:11:11 GMT (+0000)

0

精彩评论

暂无评论...
验证码 换一张
取 消