如何将"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 改变。
实际上,这是正确的。
但是,调试器和NSLog
以 GMT 显示时间。
如果要显示本地时间,请使用NSDateFormatter
和stringFromDate
。
更新:
您的日期格式化程序格式也设置不正确。
它应该是:[df setDateFormat:@"hh:mm:ss aa"];
,因为您使用的是 12 小时制。
这是因为
您的区域设置。
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"];