iOS/macOS 开发时,处理时间,如果遇到夏令时改怎么办?

今天是28号,在27号凌晨两点钟的时候 执行夏令时的地区,已经将时钟调整 慢了一个小时,以此来结束夏令时,有关夏令时的内容介绍,请自行百度。

今天技术支持反馈了个时间的问题,在课表中显示了两个27号的时间。在接到问题之后,没有什么思路,因为之前一直运行ok 没什么问题。但是仔细想了一下,刚开始做课表的时候,考虑过国外的夏令时,会不会就是这个问题呢。 然后就开始在代码中 将要计算时间的时间戳给打印出来 发现这一周的第一天 时间戳为: 1572152400 第二天的时间戳为:1572238800  并没有什么大问题。但是 调整一下自己的系统时区,将时区调整为墨西哥城,然后在时间戳转换工具里面 转换一下时间戳 发现,这两个时间戳显示的年月日 竟然都是2019年10月27号!区别是差了11个小时,但是时间戳是相差12个小时。这个要怎么解决呢?

还好苹果爸爸给咱们提供了很全面的API,我们可以获取daylightSavingOffSet,然后去调整一下时间戳,算出给出时间的日期就OK了。具体代码如下:

获取给定时间戳的工作日:

  NSDate*temDate=[NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSTimeInterval daylightSavingInterval = [[NSTimeZone systemTimeZone] daylightSavingTimeOffsetForDate:temDate];

    NSLog(@"daylightSavingInterval : %f", daylightSavingInterval);

    NSDate* date = [NSDate dateWithTimeIntervalSince1970:timeInterval - daylightSavingInterval];

    NSCalendar*gregorian = [NSCalendar currentCalendar];

    NSDateComponents*weekdayComponents = [gregoriancomponents:NSCalendarUnitWeekday fromDate:date];

    NSUInteger weekDayInteger = (NSUInteger)[weekdayComponentsweekday];

获取日期的代码类似。

你可能感兴趣的:(iOS/macOS 开发时,处理时间,如果遇到夏令时改怎么办?)