dateFromComponents获取值不正确

时间:2023-02-14 16:03:39

NSDateComponents *pDateComponent = [GlobalFunctionsNSDateToNSDateComponents:[m_pDatePickerdate]];

NSCalendar *gregorian = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];

 [pDateComponent setHour:00];

 [pDateComponent setMinute:00];

 [pDateComponent setSecond:00];

 m_lSearchBeginTime = [[gregorian dateFromComponents:pDateComponent] timeIntervalSince1970];

运行时发现,pDateComponent的值是正确的年月日 00:00:00,而当dateFromComponents之后,时间却莫名其妙的变成了下午时间了,后来仔细想了想,觉得这个时间很像时区的时差,后来看了下模拟器的地区,果然。。。居然是america,难怪会有差异,把时区改回宇宙最伟大的国家之后,时间回归00:00:00,一切正常了。原来dateFromComponets是和你系统的时区相挂钩的。

by the way,代码里可以直接更改默认的时区,具体代码如下:[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"CMT"]];