需要在 objective-c 获得中央时间
need to get central time in objective-c
我有一个需要获取当前时间 (CST) 的应用程序。我正在尝试使用以下代码,但 NDate 与 GMT 相同:
NSDate* date = [NSDate date];
NSLog(@"Time is %@", [date description]);
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSDate* nDate = [NSDate date];
NSLog(@"Central time is%@", [nDate description])
but the NSDate is the same as GMT
没错,如果您查看打印输出,它说显示的是格林威治标准时间。因此,它为您提供了正确答案 — 日期时间,现在,以格林威治标准时间表示。当前时间 CST 是 它向您显示的 GMT 日期时间。
这就是 description
所做的。如果这不是您想要的,您为什么使用 description
?
NSDate
没有时区。这是一个及时的时刻。一个时刻存在于所有时区。它从 -description
给出的字符串必须选择一个时区来表示时刻,因为这是我们编写日期和时间的方式,但它选择的是任意的。 中用于描述的时区不可能代表关于NSDate
对象性质的任何基本事实。
如果要将日期格式化为字符串,请不要使用 -description
,因为它定义不明确。 (例如,它使用的时区在 OS X 版本之前已经更改,并且可能会再次更改。)使用 NSDateFormatter
。您可以通过设置 timeZone
属性.
来为 NSDateFormatter
配置时区
如果您想获取有关日期的信息,例如月、日、小时、分钟等,请使用 NSCalendar
和 NSDateComponents
。
除了时间本身没有时区这一事实之外,您还必须添加一个日历以根据我描述的时区设置它 here, you should not use a tz abbreviation as described here。
我有一个需要获取当前时间 (CST) 的应用程序。我正在尝试使用以下代码,但 NDate 与 GMT 相同:
NSDate* date = [NSDate date];
NSLog(@"Time is %@", [date description]);
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CST"]];
NSDate* nDate = [NSDate date];
NSLog(@"Central time is%@", [nDate description])
but the NSDate is the same as GMT
没错,如果您查看打印输出,它说显示的是格林威治标准时间。因此,它为您提供了正确答案 — 日期时间,现在,以格林威治标准时间表示。当前时间 CST 是 它向您显示的 GMT 日期时间。
这就是 description
所做的。如果这不是您想要的,您为什么使用 description
?
NSDate
没有时区。这是一个及时的时刻。一个时刻存在于所有时区。它从 -description
给出的字符串必须选择一个时区来表示时刻,因为这是我们编写日期和时间的方式,但它选择的是任意的。 中用于描述的时区不可能代表关于NSDate
对象性质的任何基本事实。
如果要将日期格式化为字符串,请不要使用 -description
,因为它定义不明确。 (例如,它使用的时区在 OS X 版本之前已经更改,并且可能会再次更改。)使用 NSDateFormatter
。您可以通过设置 timeZone
属性.
NSDateFormatter
配置时区
如果您想获取有关日期的信息,例如月、日、小时、分钟等,请使用 NSCalendar
和 NSDateComponents
。
除了时间本身没有时区这一事实之外,您还必须添加一个日历以根据我描述的时区设置它 here, you should not use a tz abbreviation as described here。