我正在尝试使用指定的格式化程序创建日期对象,但date formatter_datefromstring方法返回nil。请通过清晰的文档样本让我知道。我要解析的String是“ 2017年9月24日太平洋标准时间凌晨2:00”。提前致谢
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
[dateFormat setDateFormat:@"h:mm a Z 'on' MMMM d, yyyy"];
NSLog(@"dateStr:==============> %@", dateStr);
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"Date:------------->%@", date);
return date;
最佳答案
您使用了错误的时区说明符。 Z
用于时区,例如-0800
。对于短时区缩写(例如z
),您需要PDT
。
同样,没有理由将格式化程序的本地设置为currentLocale
,将时区设置为systemTimeZone
,因为这些是默认设置。当您要分析的字符串包含时区信息时,格式化程序的时区就无关紧要。
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"h:mm a z 'on' MMMM d, yyyy"];
NSLog(@"dateStr:==============> %@", dateStr);
NSDate *date = [dateFormat dateFromString:dateStr];
NSLog(@"Date:------------->%@", date);
return date;
但是,由于您要解析英语的固定格式日期字符串,因此,您确实应该将格式化程序的语言环境设置为
en_US_POSIX
的特殊语言环境。这将确保无论用户的语言环境如何,都可以处理英语月份的名称。[dateFormat setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
关于ios - NSDateFormatter在调用datefromstring方法时返回nil?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46375910/