【发布时间】:2013-01-19 18:12:28
【问题描述】:
我正在将一个 NSString 转换为一个 NSDate 并在最终转换中遇到了年份错误的问题。
我的输入日期是2013-05-27 03:38:20 +0000(在下面的代码中列为lastEntry.date)
我的转换代码如下:
//Convert String to NSDate
NSDateFormatter *originalDateFormat = [[NSDateFormatter alloc] init];
[originalDateFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss Z"];
[originalDateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
NSDate *originalEndDate = [originalDateFormat dateFromString:lastEntry.date];
NSLog(@"Converted End Date = %@", [originalDateFormat stringFromDate:originalEndDate]);
我得到的最终输出是:Converted End Date = 2012-05-27 03:38:20 +0000
我不知道为什么我在这次转换中损失了一年。到目前为止,在我的所有研究中,这个转换过程中最难的部分似乎是确保格式正确,并且由于我的输出日期格式正确,我觉得还有其他问题。我有什么遗漏或做错了吗?
【问题讨论】:
-
请分享您设置 lastEntry.date 的代码
-
使用大
Ys 作为年份可能会导致无法返回当前日历年。更多信息:unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns -
这可能没什么,但你能把日志输出贴出来吗: NSLog(@"Converted End Date = %@", originalEndDate);我想在不通过格式化程序在两个方向上运行的情况下查看日期。
-
@AnoopVaidya 和 Boris - 更改为 yyyy 效果很好,并且该链接包含有关日期格式的大量信息。非常感谢你们。
标签: ios objective-c cocoa-touch nsstring nsdate