NSDateFormatter字符串到日期转换

时间:2015-03-27 14:21:21

标签: ios objective-c nsdate nsdateformatter

我需要转换

3/27/2015 5:45:00 AM

将字符串转换为NSDate对象。

我试过了;

[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];

但它不起作用。

我无法理解的可能是什么错误?

由于

已添加代码;

      NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
      [dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];  
      NSDate *tempDate = [dateFormatter dateFromString:@"3/27/2015 5:45:00 AM"]

编辑:

不知何故,因为时间片(AM / PM)变为空。 我删除了" a"来自dateformatter,来自字符串的AM。没关系。 但是仍然不知道" a" ?

2 个答案:

答案 0 :(得分:3)

您忘记了将日期区域设置的区域设置添加到日期格式化程序中。 代码将运行正常任何设置为美国英语的设备,但其他语言环境将失败。只需添加en_US_POSIX作为日期格式化程序的区域设置:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
NSDate *tempDate = [dateFormatter dateFromString:@"3/27/2015 5:45:00 AM"];

答案 1 :(得分:0)

我不明白你的问题。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSDate *tempDate = [dateFormatter dateFromString:@"3/27/2015 5:45:00 AM"];
NSLog(@"%@", tempDate); // prints "2015-03-27 09:45:00 +0000" to the console.

这是您发布的代码。我逐字复制了它。我包含的NSLog正确打印了一个日期,而不是nil