当用户的设备在iOS中设置为24小时时,如何将包含"am/pm"的字符串转换为NSDate?

kee*_*e23 2 iphone nsdate nsdateformatter ios

我需要将NSString转换为NSDate,但只要用户的设备未设置为24小时制,以下代码才有效.

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];

NSString *aTime = @"2/11/2013 12:00:00 AM";
NSDate *aDate = [formatter dateFromString:aTime];
Run Code Online (Sandbox Code Playgroud)

但是,当设备处于24小时时间时,aDate返回null.有帮助吗?

Tom*_*mmy 8

我想你可能会看到QA1480描述的行为的副作用.Apple已经解决了它可能认为开发人员没有通过修改您的规定日期格式来正确遵守语言环境的内容,除非您明确说明不这样做.

你可以通过添加:

formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
      /* and autorelease if not using ARC */
Run Code Online (Sandbox Code Playgroud)

这基本上说'我刚设置的日期格式明确是我想要的,请不要以任何方式修改它'.