NSDate格式化程序在下午 4:15:00 不起作用



如何将"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 显示时间。

如果要显示本地时间,请使用NSDateFormatterstringFromDate

更新:
您的日期格式化程序格式也设置不正确。

它应该是:[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"];

最新更新