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

Abu*_*min 0 objective-c nsdate nsdateformatter ios swift

我有字符串形式的日期,因为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"];
Run Code Online (Sandbox Code Playgroud)

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

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

Anb*_*hik 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"];
Run Code Online (Sandbox Code Playgroud)

迅速

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")
Run Code Online (Sandbox Code Playgroud)

你得到的输出

在此输入图像描述


San*_*t_B 5

你写错了日期格式,

[parsingFormatter setDateFormat:@"EE, dd MMM yyyy hh:mm:ss Z" ];
Run Code Online (Sandbox Code Playgroud)