将字符串转换为日期时从dateFromString获取nil

时间:2015-08-21 15:26:52

标签: ios nsdateformatter

每当我尝试将日期字符串传递给dateFromString函数时,我都会nil。自从iOS 7更新以来,我没有看到任何事情发生了变化,但是如果这对于是否仍然以相同的方式起作用有所不同,我现在正在进行更新。

这是我用来从字符串创建日期的代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
[dateFormat setFormatterBehavior:NSDateFormatterBehaviorDefault];

我的日期字符串为@"2015-08-22 13:00:00"

NSDate *date = [[NSDate alloc] init];
date = [dateFormat dateFromString:@"2015-08-22 13:00:00"];
return date;

最后一行返回nil。

4 个答案:

答案 0 :(得分:2)

hh表示12小时模式下的小时数,13表示超出范围。

hh替换为HH 24小时模式

答案 1 :(得分:2)

您需要更改:

[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

使用:

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

由于hh表示12小时制,HH表示24小时制。

答案 2 :(得分:1)

上周我遇到了完全相同的问题,我用这段代码解决了这个问题:

NSDate *date = [NSDate dateWithTimeIntervalSince1970:dateFromString.doubleValue];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *stringDate = [dateFormatter stringFromDate:date];
  • 这里有一个名为 dateFromString 的字符串,因为这是我从服务器接收的日期的对象类型。此字符串以double值转换,日期以时间间隔计算。

  • 我想你需要在标签或文本视图或这样的其他UI元素中显示这个日期,正因为如此,我将日期转换为NSString以便于使用它。这就是我在 stringDate 中的含义。

如果我需要帮助你,请告诉我。

答案 3 :(得分:0)

12小时制的小写字母和24小时制的大写字母。用HH改变......