将字符串转换为日期时从 dateFromString 获取 nil
Getting nil from dateFromString when converting string to date
每次我尝试将日期字符串传递给 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;
最后一行returns无。
hh
表示 12 小时模式的小时数,13 超出范围。
将 hh
替换为 HH
以获得 24 小时模式
小写字母表示 12 小时制,大写字母表示 24 小时制。把hh换成HH。
您需要更改:
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
与:
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
因为 hh
指的是 12 小时制而 HH
指的是 24 小时制。
上周我遇到了完全相同的问题,我用这段代码解决了它:
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 中的内容。
如果需要更多帮助,请告诉我。
每次我尝试将日期字符串传递给 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;
最后一行returns无。
hh
表示 12 小时模式的小时数,13 超出范围。
将 hh
替换为 HH
以获得 24 小时模式
小写字母表示 12 小时制,大写字母表示 24 小时制。把hh换成HH。
您需要更改:
[dateFormat setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
与:
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
因为 hh
指的是 12 小时制而 HH
指的是 24 小时制。
上周我遇到了完全相同的问题,我用这段代码解决了它:
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 中的内容。
如果需要更多帮助,请告诉我。