【发布时间】:2014-05-07 21:48:41
【问题描述】:
实际 NSDate 对象 (firstTime) 的输出是我想要的(iOS 设备的时间)。即使我设置了日期格式化程序(df ) 到本地时区。为什么它不起作用?
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss"];
[df setTimeZone:[NSTimeZone localTimeZone]];
NSDate *firstTime = [NSDate dateWithTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT] sinceDate:[NSDate date]];
NSLog(@"%@", firstTime);
NSString *secondTime = [df stringFromDate:firstTime];
NSLog(@"%@", secondTime);
输出:
第一次:2014-05-07 17:41:29 +0000,第二次:13:41:29
【问题讨论】:
-
那些可能是同一时间...第一次输出时区第二次不输出
-
好吧,你破坏了 NSDate 对象中的时间。由于您从 NSDate 对象派生日期字符串,它也会被损坏。
-
(提示:不要试图“更正” NSDate 的时区。它会自动在 GMT 中。)
-
[dateTime description]和NSLog,始终将时间报告为 GMT。在我看来,一切都按预期工作(假设您的时区是 GMT-4,EDT) -
你好。我以什么方式“破坏”了 NSDate 对象?我正在尝试获取在第一次之后显示的同一日期的 NSString:。如果我在创建 firstTime 时不更改 NSTimeZone,它将出现在 GMT 时间。我要做的就是将我从 NSLogging firstTime 获得的确切输出转换为 NSString,因此当我输出该 NSString 时,它将是相同的。另外,我看到有人发布说 NSDateFormatter 默认情况下将时区设置为本地时区,并且明确设置它是多余的。真的吗?我再也看不到他的帖子了。
标签: ios objective-c