NSString到NSDate转换的问题

时间:2013-01-19 18:12:28

标签: ios objective-c cocoa-touch nsstring nsdate

我正在将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

我不确定为什么我在转换过程中失去了一年。在我迄今为止的所有研究中,似乎这个转换过程中最困难的部分是确保格式正确,并且由于我的输出日期格式正确,我觉得还有其他问题。有什么东西我错过了或做错了吗?

2 个答案:

答案 0 :(得分:3)

将日期格式从YYYY更改为yyyy

答案 1 :(得分:1)

日期格式化程序相关内容。

d:1~31(0月填充日) D:1~366(0年填充日)

e:1~7(0周填充日) E~EEE:周一/周一/周二/周三/周四/周五/周六 EEEE:周日/周一/周二/周三/周四/周五/周六

M / MM:1~12(0填充月份) MMM:Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec MMMM:1月/ 2月/ 3月/ 4月/ 5月/ 6月/ 7月/ 8月/ 9月/ 10月/ 11月/ 12月

是的/ yyyy :(全年) yy / yyy:(2位数年份) Y / YYYY :(全年,从一年的第一周的星期日开始) YY / YYY :( 2位数年份,从一年的第一周的星期日开始)