【发布时间】:2015-09-30 10:23:20
【问题描述】:
我对这两个 NSDate 对象似乎如何知道它们所在的时区感到有些困惑。我的印象是 NSDate 对象只存储了一个时间点而没有关于时区的信息。
我正在创建和记录两个这样的日期:
NSString* timeString = @"6:04 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"h:mm a"];
NSDate *time = [dateFormatter dateFromString:timeString];
NSDateFormatter *currentFormatter = [[NSDateFormatter alloc] init];
[currentFormatter setTimeStyle:NSDateFormatterLongStyle];
NSLog(@"%@", [currentFormatter stringFromDate:time]);
NSLog(@"%@", [currentFormatter stringFromDate:[NSDate date]]);
这会产生输出:
18:04:00 GMT
11:12:36 BST
它怎么知道第一个日期是格林威治标准时间,第二个是英国夏令时?
(这里是英国夏令时。在这方面您的里程可能会有所不同)
【问题讨论】:
-
你确定这是给我们这个输出的代码吗?我得到了与您的代码具有相同时区的输出。
-
是的,在 iPhone 6s 上运行 iOS 9,我的地区设置为英国,时区设置为伦敦并开启 24 小时制。 Xcode 7.0.1。
-
澄清一下,我使用的是 iOS 9.0.1。
标签: ios nsdate nsdateformatter