错误的转换

时间:2014-01-19 07:40:58

标签: ios objective-c nsdate

NSDateFormatter转换为错误的日期不知道为什么

我正在使用以下代码将字符串 19-01-2014 01:06:54 PM 转换为日期

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"DD-MM-YYYY hh:mm:ss a"];
NSDate *date = [dateFormat dateFromString:startTime];

我得到以下输出不正确。请提出一些建议

打印日期说明: 2014-01-04 07:36:54 +0000

2 个答案:

答案 0 :(得分:1)

格式字符串中的“DD-MM-YYYY”部分不正确,应为“dd-MM-yyyy”。 (有关a,请参阅http://www.unicode.org/reports/tr35/tr35-25.html#Date_Format_Patterns 所有日期格式的完整列表。)

此外,您应将“POSIX区域设置”设置为独立于用户的区域设置/区域 设置:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy hh:mm:ss a"];
[dateFormat setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
NSDate *date = [dateFormat dateFromString:startTime];

答案 1 :(得分:0)

打印NSDate将返回默认描述 - 由于NSDates不考虑区域设置,时区等,因此默认为UTC +/- 0000(注意+0000)。