为什么这段代码会给我GMT? (我在美国山区时间)
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
[dateFormatter setLocale:[NSLocale currentLocale]];
NSDate *now = [NSDate date];
NSString *storeTime = [dateFormatter stringFromDate:now];
答案 0 :(得分:3)
NSDate
表示具体的时间点,,与时区无关。换句话说,NSDate
没有时区。只有当您想要向用户显示日期时,时区才有意义。所以在山区时间晚上9:30 格林尼治标准时间凌晨3:30(+1天)(假设时差为6小时)。
NSDate
,因为它没有时区,所以在生成人类可读版本时必须选择一个作为其-description
返回。为简单起见,它始终返回以GMT时区格式化的日期。如果您希望格式化的日期位于不同的时区,则可以设置-timezone
的{{1}}属性,然后使用NSDateFormatter
方法将日期转换为字符串。< / p>
答案 1 :(得分:0)
是的,事实证明这是Apple在Mac上的号码中的一个错误。数字不是解释日期字符串,而是添加时间偏移量。格式化后,NSDate字符串一直都是正确的。