由于时区问题NSDate
,我被困在某个地方。NSDateFormatter
我只需要以 UTC(转换为 unix 时间)向服务器发送时间。
这是我正在做的几个步骤:
从日历中选择一个日期应添加当前时间并转换为 UTC。
将所选日期与当前日期进行比较。只是想知道所选日期是过去日期还是将来日期。(根据过去/未来/当前日期进行的其他操作很少)。
我试过这段代码:
在一个类别中NSDate
:
-(NSDate *) toLocalTime{
NSDate* sourceDate = self;
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"UTC"];
NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:sourceDate];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:sourceDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
NSDate* destinationDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:sourceDate];
return destinationDate;
}
但是当我尝试将日期转换为本地时存在问题(有时我不确定当前时间是否在本地时区)。如果它们是 UTC,那么上述方法可以正常工作。
如果时间已经在本地时区,那么它会再次添加interval
,我得到的时间不正确。
我没有想法,请帮助我。
任何想法都将受到高度赞赏。