1

我有一个方法接收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再次降低该值。我究竟做错了什么?有简单的方法吗?

4

1 回答 1

3

如果我正确理解您的问题,您的代码应该可以工作,并且在我尝试时似乎也给出了预期的结果。也许这是一个systemTimeZone vs的问题localTimeZone

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

NSTimeInterval i = [date timeIntervalSince1970];
i -= [[NSTimeZone localTimeZone] secondsFromGMTForDate:date];
于 2013-11-03T16:02:16.447 回答