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

最佳答案

如果我正确理解了您的问题,则您的代码应该可以运行,并且似乎
尝试时给出预期的结果。也许这是systemTimeZone的问题
localTimeZone相比。

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

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

关于ios - 获取自1970年以来的NSDate时间减去/加上UTC值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19754680/

10-12 13:37