正确地将 NSString 转换为 NSDate
Correctly turn an NSString into NSDate
这似乎是一个很受欢迎的问题,但我还没有找到适用于我的情况的答案。
考虑我的代码行:
classHour.StartPoint = [NSDate dateWithTimeIntervalSince1970:[[thisEvent valueForKey:@"Start"] doubleValue]];
classHour.StartPoint 是一个 NSDate。
thisEvent valueForKey:@"Start" 是一个 NSString 值 @"2016-01-13T07:30:00.0000000Z"
但不知何故,classHour.StartPoint 得到的值为 '1970-01-01 00:33:36 UTC'
我的问题有两个:
为什么会发生这种情况,并且 - 更正后 - 我确实会得到一个有效的 NSDate 吗?
这不起作用的原因是因为您正试图从字符串中获取双精度值。
我的情况是字符串是 2016-01-13T07:30:00.0000000Z
,它不是双精度值,因此值 return 是 2016
.
2016
是 return 因为 -
不是有效的双精度数,解析将在此处停止。但是 dateWithTimeIntervalSince1970:
创建的日期是正确的,因为自 1-1-1970 00:00:00
.
以来是 2016 秒
您需要使用 NSDateFormater
从字符串中获取正确的日期值。
NSDateFormatter *dateFormatter= [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy'-'mm'-'dd'T'HH:mm:ss.AZ";
NSString *dateString =[thisEvent valueForKey:@"Start"];
NSDate *date = [dateFormatter dateFromString:test];
这似乎是一个很受欢迎的问题,但我还没有找到适用于我的情况的答案。
考虑我的代码行:
classHour.StartPoint = [NSDate dateWithTimeIntervalSince1970:[[thisEvent valueForKey:@"Start"] doubleValue]];
classHour.StartPoint 是一个 NSDate。
thisEvent valueForKey:@"Start" 是一个 NSString 值 @"2016-01-13T07:30:00.0000000Z"
但不知何故,classHour.StartPoint 得到的值为 '1970-01-01 00:33:36 UTC'
我的问题有两个: 为什么会发生这种情况,并且 - 更正后 - 我确实会得到一个有效的 NSDate 吗?
这不起作用的原因是因为您正试图从字符串中获取双精度值。
我的情况是字符串是 2016-01-13T07:30:00.0000000Z
,它不是双精度值,因此值 return 是 2016
.
2016
是 return 因为 -
不是有效的双精度数,解析将在此处停止。但是 dateWithTimeIntervalSince1970:
创建的日期是正确的,因为自 1-1-1970 00:00:00
.
您需要使用 NSDateFormater
从字符串中获取正确的日期值。
NSDateFormatter *dateFormatter= [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy'-'mm'-'dd'T'HH:mm:ss.AZ";
NSString *dateString =[thisEvent valueForKey:@"Start"];
NSDate *date = [dateFormatter dateFromString:test];