获取自1970年以来的NSDate时间减去/加上UTC值

时间:2013-11-03 15:35:29

标签: ios nsdate utc

我有一个接收NSDate对象的方法,并返回1970年的秒数。

它看起来像这样:

-(int)editDate:(NSDate*)date{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:date];


NSDateFormatter *stringToNSdate = [[NSDateFormatter alloc] init];
[stringToNSdate setTimeZone:[NSTimeZone systemTimeZone]];
[stringToNSdate setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [stringToNSdate dateFromString:dateString];


return [dateFromString timeIntervalSince1970];
}

该方法应返回1970年减去或加UTC值的秒数。 直到dateString工作正常的第一部分,然后我需要从NSDate创建NSString对象,格式化工具再次减少UTC值。我究竟做错了什么? 有一个简单的方法吗?

1 个答案:

答案 0 :(得分:3)

如果我正确理解您的问题,您的代码工作,而且似乎也是如此 当我尝试时给出预期的结果。也许这是systemTimeZone的问题 与localTimeZone

但请注意,您可以将完整方法简化为

NSTimeInterval i = [date timeIntervalSince1970];
i -= [[NSTimeZone localTimeZone] secondsFromGMTForDate:date];