NSDateFormatter MMM转换

时间:2017-09-20 12:21:05

标签: ios objective-c xcode nsdate nsdateformatter

和之前的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

我试过以各种方式操作字符串,只有在我转动函数后才发现dateformat问题已经出现。

是否有人发现此问题并提供了可能的解决方案?

编辑:

我唯一拥有的设备是带有iOS 11的iPhone 7(两款不同的设备已经过测试,带有iOS 10的iPhone 7也正常运行)。我有一个iPhone 6 plus和一个iPhone 7 Plus,它们都在iOS 11上,这两个都在工作......时间格式

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

1 个答案:

答案 0 :(得分:1)

经过仔细研究后,似乎我已经设置了一个DateFormatter,我还需要添加一个Locale来让它工作......我从服务器获得的日期所以我不能改变它,因为也被用在网站上。

我从服务器收到了AM / PM的日期,Locale解决了问题

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

这解决了我遇到的问题。