将字符串转换为日期会返回错误的结果

时间:2016-05-05 10:12:26

标签: ios objective-c swift nsdate nsdateformatter

我以字符串的形式将日期作为Mon, 18 Apr 2016 07:29:49 GMT现在我试图通过这样做将其转换为日期对象

NSDateFormatter *parsingFormatter = [NSDateFormatter new];
[parsingFormatter setDateFormat:@"EE, dd MMM YYYY hh:mm:ss Z" ];
NSDate *date = [parsingFormatter dateFromString:@"Mon, 18 Apr 2016 07:29:49 GMT"];

但是当我在date对象中看到结果时,它包含以下日期2015-12-21 07:29:49 +0000

有人可以说明为什么会将日期从2016年4月18日更改为2015年12月21日吗?

2 个答案:

答案 0 :(得分:7)

YYYY是以周为基础的日历年。

yyyy是普通日历年。

喜欢

NSDateFormatter *parsingFormatter = [NSDateFormatter new];
[parsingFormatter setDateFormat:@"EE, dd MMM yyyy hh:mm:ss Z"];
[parsingFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSDate *date = [parsingFormatter dateFromString:@"Mon, 18 Apr 2016 07:29:49 GMT"];

<强>夫特

let parsingFormatter: NSDateFormatter = NSDateFormatter()
parsingFormatter.dateFormat = "EE, dd MMM yyyy hh:mm:ss Z"
parsingFormatter.timeZone = NSTimeZone.localTimeZone()
let date: NSDate = parsingFormatter.dateFromString("Mon, 18 Apr 2016 07:29:49 GMT")

你得到了

的输出

enter image description here

答案 1 :(得分:5)

你写错了日期格式,

[parsingFormatter setDateFormat:@"EE, dd MMM yyyy hh:mm:ss Z" ];