0

如何将“下午 4:15:00”转换为 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 发生变化。

4

2 回答 2

5

实际上,这是正确的。

但是,调试器并以 GMTNSLog 显示时间。

如果要显示当地时间,请使用 aNSDateFormatterstringFromDate

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

应该是: [df setDateFormat:@"hh:mm:ss aa"];因为您使用的是 12 小时制。

于 2012-05-30T16:44:51.053 回答
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"];
于 2012-05-30T16:44:30.930 回答