如何将“4:15:00 PM”转换为NSDate?以下是我的代码:
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss aa"];
NSDate *date = [df dateFromString:@"4:15:00 PM"];
NSLog(@"date: %@",date);//outputs: 1970-01-01 17:15:00 +0000
//should output: 1970-01-01 16:15:00 +0000
更新:我根据回复进行了更新,但仍然显示错误的显示:
NSLog(@"date: %@",[df stringFromDate:date]);//outputs: 12:15:00 PM
//should output: 4:15:00 PM
问题是为什么时间从下午4:15:00到下午12:15:00变化。
答案 0 :(得分:5)
实际上,这是正确的。
但是,调试器和NSLog
显示 GMT中的时间。
如果您想显示当地时间,请使用NSDateFormatter
和stringFromDate
。
<强>更新强>
您的日期格式化程序格式也设置不正确。
应该是:[df setDateFormat:@"hh:mm:ss aa"];
,因为你使用12小时制。
答案 1 :(得分:2)
这是因为你的语言环境。
NSDateFormatter
输出一个NSDate - 它总是在GMT时间内。
如果您希望将初始字符串解释为GMT时间,则需要包含时区。
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss aa z"];
NSDate *date = [df dateFromString:@"4:15:00 PM GMT"];