将Ruby on Rails DateTime转换为NSDate的问题

wgp*_*ubs 6 datetime objective-c nsdate

为什么是这样 ...

NSString *mydate = @"2011-07-20T23:59:00-07:00"

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

    NSLog(@"%@", [[dateFormatter dateFromString:mydate] description]);
Run Code Online (Sandbox Code Playgroud)

...在控制台中返回"(null)"?

Dav*_*ong 13

您的日期格式@"yyyy-MM-dd'T'HH:mm:ss'Z'"表示它正在Z字符串末尾查找文字" "字符.但是,您的字符串是:

@"2011-07-20T23:59:00-07:00"
Run Code Online (Sandbox Code Playgroud)

我没有看到Z那个","你呢?因此,日期会回来,nil因为您的字符串与指定的格式不匹配.

根据日期格式模式文档,您可能正在寻找以下格式字符串:

@"yyyy-MM-dd'T'HH:mm:ssZZ"
Run Code Online (Sandbox Code Playgroud)

但是,即使可能也不起作用,因为如果您注意到源字符串:在时区偏移的小时和分钟之间有一个冒号(" ").没有时区说明符可以解释这一点.如果这确实是ROR返回日期的格式,那么ROR是错误的.

  • FWIW,我能够使用ZZZZ和`2013-06-18T22:00:00-04:00`.它回到我身边`2013-06-19 04:00:00 + 0000` (2认同)