NSDateFormatter MMM 转换

NSDateFormatter MMM conversion

和以前一样 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

我试过用各种方法操作字符串,打开函数后才发现日期格式问题出现了。

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

编辑:

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

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

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

我从服务器收到的日期是 AM/PM,区域设置解决了这个问题

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

这解决了我遇到的问题。