每当我尝试将日期字符串传递给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。
答案 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改变......