【发布时间】:2014-02-22 17:15:45
【问题描述】:
我正在使用下面的代码,但它给了我提前一天的日期。
示例:将输入字符串传递为“2013-08-31T23:59:59-0400”,输出日期为“2013-09 -01 03:59:59 +0000”。
NSDateFormatter *formatter = [self railsDateFormatter];
NSDate *date = [formatter dateFromString:dateString];
+(NSDateFormatter*)railsDateFormatter
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd'T'HH:mm:ssZ"];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[formatter setLocale:locale];
return formatter;
}
谢谢。
【问题讨论】:
-
您似乎没有提前 1 天,更像是提前了 4 小时。输出时的日期是怎么格式化的?
-
线索是字符串末尾的时区偏移量,第一个是
-0400(落后4小时),第二个是+0000(落后0小时)。您已将本地设置为en_US_POSIX,这改变了您的时区。完全没有问题 -
如果你不知道YYYY和yyyy的区别,你应该使用yyyy。但这只会打破 1 月 1 日附近的日期。
标签: ios iphone objective-c