Objective c 如何将日期时间(包括毫秒和时区信息)转换为NSDate
我正在尝试将字符串转换为NSDate, 然而,格式总是显示为零 我尝试转换的日期是:Objective c 如何将日期时间(包括毫秒和时区信息)转换为NSDate,objective-c,datetime-format,Objective C,Datetime Format,我正在尝试将字符串转换为NSDate, 然而,格式总是显示为零 我尝试转换的日期是: 2012-08-16T16:20:52.619000+00:00 我尝试的日期格式是: @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZ" 如果我将日期更改为: @"2012-08-16T16:20:52.619000+0000" // removing the : from +00:00 不管我怎么说,这是一种享受 我也试过了 @"yyyy-MM-dd'T'HH:mm:ss.SSSS
2012-08-16T16:20:52.619000+00:00
我尝试的日期格式是:
@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZ"
如果我将日期更改为:
@"2012-08-16T16:20:52.619000+0000" // removing the : from +00:00
不管我怎么说,这是一种享受
我也试过了
@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZ:ZZ"
@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZ':'ZZ"
但这也不起作用
甚至可以不进行字符串操作和删除最后一个: 我对此进行了最后的搜索,发现您必须使用
getObjectValue
而不是
dateFromString
如果有其他人遇到这个问题,我会发布将这些字符串转换为NSDate的方法
+ (NSDate *)dateFromString:(NSString *)dateString {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"];
NSDate *theDate = nil;
NSError *error = nil;
[dateFormat getObjectValue:&theDate forString:dateString range:nil error:&error];
[dateFormat release];
return theDate;
}
我对此做了最后的搜索,发现您必须使用
getObjectValue
而不是
dateFromString
如果有其他人遇到这个问题,我会发布将这些字符串转换为NSDate的方法
+ (NSDate *)dateFromString:(NSString *)dateString {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"];
NSDate *theDate = nil;
NSError *error = nil;
[dateFormat getObjectValue:&theDate forString:dateString range:nil error:&error];
[dateFormat release];
return theDate;
}
像这样的怎么样
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
Z必须用单引号括起来。像这样的东西怎么样
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
Z必须是单引号。看起来您使用的是ISO 8601格式的日期。如果您是从web服务获取这些内容,则格式会根据格式的不同而变化。看看这个:
这将根据格式转换日期,即使格式略有变化。看起来您使用的是ISO 8601格式的日期。如果您是从web服务获取这些内容,则格式会根据格式的不同而变化。看看这个:
这将根据格式转换日期,即使格式略有变化。Gee,我们已经有一段时间没有标准问题782了。使用NSDateFormatter,但首先必须清除最后一个:字符的字符串。可能重复的@HotLicksYou都错了。我在下面提供了一个答案,并没有修改日期字符串,而是使用getObjectValueGee,我们已经有一段时间没有标准问题782了。使用NSDateFormatter,但首先必须清除最后一个:字符的字符串。可能重复的@HotLicksYou都错了。我在下面提供了一个答案,并没有修改日期字符串,而是使用getObjectValue。在这种情况下,我看不出getObjectValue与dateFromString有什么不同。在这两种情况下,输入字符串似乎都需要删除。这不会改变任何事情。dateFromString:调用getObjectValue:。。。前者只是后者的一个方便的包装器,因为当您不关心可能错误的细节时。我建议您在标记代码或做出这样的声明之前先尝试代码。您仍然没有测试代码:这里有更多支持我尝试过。你试过我的吗?在这种情况下,我看不出getObjectValue与dateFromString有什么不同。在这两种情况下,输入字符串似乎都需要删除。这不会改变任何事情。dateFromString:调用getObjectValue:。。。前者只是后者的一个方便的包装器,因为当您不关心可能错误的细节时。我建议您在标记代码或做出这样的声明之前先尝试代码。您仍然没有测试代码:这里有更多支持我尝试过。你试过我的吗?它们做完全相同的事情。这不考虑毫秒数。然而,使用getObjectValue而不是dateFromStringso.SSSS'Z'几乎不值得-1这不考虑毫秒。然而,使用getObjectValue而不是dateFromStringso.SSSS'Z'几乎不值得-1