【问题标题】:iPhone SDK NSString To NSDateiPhone SDK NSString 到 NSDate
【发布时间】:2011-02-06 19:25:24
【问题描述】:

我从解析 XML 文件中得到一个字符串,如下所示:Fri, 09 Apr 2010 00:00:45 +0200 并且相应的模式应该是这个“EEE,dd MMM yyyy HH:mm:ss ZZ”,但我得到(null)。

这是我的代码:

NSString *dateString = @"Fri, 09 Apr 2010 00:00:45 +0200";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];

NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"date:%@",date); // result date:(null)

编辑:

这对我有用,我不得不切换到 en-US 语言环境:

NSLocale* usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en-US"];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setLocale:usLocale];
[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];

NSDate *date = [dateFormatter dateFromString:dateString];

【问题讨论】:

  • 别忘了发布你的 dateFormater 和 usLocale !
  • 这是因为您的设备 12/24 设置与区域设置相反。这会导致 Apple 通过将“HH:mm:ss”更改为“hh:mm:ssa”来“帮助”您。使用 en-US 区域设置会禁用此“功能”。 (虽然 en_US_POSIX 更好。)

标签: iphone date nsstring nsdate nsdateformatter


【解决方案1】:

当我更改此行时,您的代码对我有用:

[dateFormatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];

到这一行:

[dateFormatter setDateFormat:@"EEE',' dd MMM yyyy HH:mm:ss ZZ"];

【讨论】:

  • 奇怪的是它仍然给我空结果。 iPhone SDK 3.1.2
  • 当字符串为“Fr”时有效。而不是“Fri”,这可能是因为它查找德国时间格式。
猜你喜欢
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
相关资源
最近更新 更多