使用NSTimeZone最佳实践的夏令时

时间:2016-07-18 07:19:10

标签: ios objective-c nstimezone

我创建了一个每周视图(类似于日历),其中包含标题星期几。我使用以下代码创建当前时间:

+(NSDate *) getCurrentDate {

    NSDate* datetime = [NSDate date];
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"America/Juneau"];// this is dynamic and coming from server.
    [dateFormatter setTimeZone:timeZone]; // Prevent adjustment to user's local time zone.
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];
    NSString* dateTimeInIsoFormatForUserTimeZone = [dateFormatter stringFromDate:datetime];  
    return [dateFormatter dateFromString:dateTimeInIsoFormatForUserTimeZone];

}

我使用此日期作为参考来创建周日期(从星期一到星期日)。我的代码适用于所有情况,但我在DST时区失败。

我在堆栈溢出上看到了类似的问题,但它们更主观,无法解决我的问题。我们非常感谢您回答代码和最佳实践。提前致谢!。

1 个答案:

答案 0 :(得分:1)

[[NSTimeZone *yourTimeZone*] secondsFromGMTForDate:*yourDate*]

使用此方法,您可以获取特定secondsFromGMTForDate的{​​{1}},该timezone也会使用夏令时进行调整。

您可以使用此偏移量在时区中创建日期对象,并相应地显示周视图