如何保存两个日期,一个使用本地日期,一个使用 UTC

How to save two dates, one using local date and one in UTC

我需要使用核心数据

在事务table中根据用户时区存储本地时间和 UTC 时间

我想要的如下

createDate 应该反映用户本地时区,在这种情况下我在 中国所以 GMT+8

createDateUtc 应该表示相同的时间戳,但在 UTC

我试过各种格式化程序,但由于某些原因我无法得到我想要的结果

这是我的两个格式化程序,如您所见,我也尝试使用时区,但它仍然没有将日期设置为 UTC。

 NSDateFormatter *dateFormatterWithTz = [[NSDateFormatter alloc] init];  
  [dateFormatterWithTz setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];  

   NSDateFormatter *dateFormatterUtc = [[NSDateFormatter alloc] init];  
  [dateFormatterUtc setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZZ"];  
  //[dateFormatterUtc setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];  

这是我创建日期变量的方法

 NSDate *createdDateUtc = [NSDate date];   
 NSDate *createdDate = [NSDate dateWithTimeInterval:[[NSTimeZone systemTimeZone] secondsFromGMT] sinceDate:createdDateUtc];  

这是不正确的数组,因为您可以看到它创建了我的 Utc 日期作为我的本地日期并将创建的日期推到明天并且仍然使用相同的时间偏移,问题应该是我的 UTC日期设置为当地时间,但我不知道如何将其设置为 UTC,以便根据该日期正确计算我的创建日期

createdDate = "2016-12-25T03:19:38+08:00";  
createdDateUtc = "2016-12-24T19:19:38+08:00";  

您需要为日期格式化程序提供时区

本地时区试试这个

NSDateFormatter *formate =[[NSDateFormatter alloc] init];
[formate setTimeZone:[NSTimeZone localTimeZone]];
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];
NSString *strToday =[formate stringFromDate:[NSDate date]];

对于 UTC 时区设置 UTC 时区 像这样

NSDateFormatter *formate =[[NSDateFormatter alloc] init];
[formate setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];
NSString *strToday =[formate stringFromDate:[NSDate date]];

希望对您有所帮助。