【问题标题】:NSDateFormatter MMM conversionNSDateFormatter MMM 转换
【发布时间】:2018-03-01 12:13:39
【问题描述】:

在 XCode 9 之前,我对 DateFormatter 没有任何问题。

随着更新,我遇到了一个我似乎无法绕过的问题。

我正忙于将日期从 NSString 转换为 NSDate,但是我的代码似乎无法初始化 NSDate。

我的代码:

NSString *testdate = @"Sep 20 2017  1:46PM"; // this is how my date looks

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMM dd yyyy hh:mma"]; 

NSDate *thisDate = [df dateFromString: testdate]; // this returns nil

我尝试过以各种方式操作字符串,只有在我打开该功能后,我才发现出现了日期格式问题。

有没有人发现这个问题和可能的解决方案?

编辑:

我使用的唯一设备是带有 iOS 11 的 iPhone 7(测试了两种不同的设备,带有 iOS 10 的 iPhone 7 也可以正常工作)。我有一部 iPhone 6 plus 和一部 iPhone 7 Plus,它们都在 iOS 11 上,而且它们都在工作……使用时间格式

当我将 [NSDate date] 转换为具有相同日期格式化程序的字符串时,我的结果是:M09 20 2017 1:46PM... - 这似乎是一个日期格式问题(似乎在我更改时间格式时发生测试)并且现在正在工作,但这不是我的问题

【问题讨论】:

  • 能不能把这个[NSDate date] 相关的代码给我
  • @Anbu.Karthik 现在从日期到字符串的转换是正确的,但是字符串到日期仍然失败
  • 日期没有给出准确的答案

标签: ios objective-c xcode nsdate nsdateformatter


【解决方案1】:

经过仔细调查,似乎如果我设置了 DateFormatter,我还需要添加一个区域设置以使其工作...我从服务器获取的日期,所以我不能只是更改它,因为正在使用在网站上也是如此。

我从服务器收到的日期是上午/下午,并且语言环境解决了问题

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"MMM dd yyyy hh:mma"];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

这解决了我遇到的问题。

【讨论】:

  • 如果用户的区域设置为英语以外的任何语言,则在任何版本的 iOS 或 Xcode 下都需要进行此更改。
  • 好的,我之前没有遇到过这个问题......只是现在......但很高兴知道......将来检查......谢谢
猜你喜欢
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
相关资源
最近更新 更多