【发布时间】:2015-11-01 14:51:00
【问题描述】:
重要更新:如果您将鼠标悬停在 NSDATE 上,调试器会将 NSDate 转换为您在 Mac 上设置的本地时区,但如果您执行 NSLOG,您会注意到 NSDate 正在使用您设置的时区分配给其各自的格式化程序。
如果您想在 xcode 调试器中查看您正在使用的时区的 NSDate 是什么,请转到您的 Mac OS 的日期/时间设置并将时区更改为您正在测试的那个。
我要求从我传入的日期开始创建一个 NSDate,但目前它设置为我传入的前一天:
NSString *dateStr = @"2015-08-09";
NSDateFormatter *myformatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [formatter dateFromString:dateStr];
上面的代码返回:一个 NSDate 设置为 '2015-08-08 12:00:00 +0000'
我需要一个 NSDate 对象设置为我传入的 datStr。
【问题讨论】:
-
你在哪个时区?
-
如果您要投反对票,请留下原因,我会修复或删除问题。
-
@Fogmeister 无论时区如何都可以获得 NSDate 吗?
-
NSDate 对时区一无所知。这就是我问的原因。 NSDate 只是一个时间点。当您要求它使用
NSLog打印日期时,是您的计算机将该时间点转换为年、月、日、小时、分钟等。
标签: objective-c cocoa