在设备时区中显示时间戳的正确方法是什么?



我有这个时间戳:1439353372

这是我们的一个用户(来自加拿大)给我发了一条消息(在印度)。

在我们的应用程序中-他看到该消息的以下时间:2015-08-11 / 22:22pm和我看到这个2015-08-12 / 09:52am。他在他的iPhone6上看到了这个,而我在iPhone6+模拟器上。

我认为这个时间是错误的-我对这个时间戳/时区和日期转换有很多困惑。

下面是我们将时间戳转换为日期并以上述格式显示的代码。

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:1439353372];
NSString *strDate = [df stringFromDate:date];
[df setDateFormat:@"HH:mm a"];
NSString *strTime = [df stringFromDate:date];
NSLog(@"%@",[NSString stringWithFormat:@"%@ / %@", strDate, strTime]);

我不确定这是在用户区域显示特定时间戳日期的正确方式?

我应该在上面的代码中添加什么,以便它总是根据我们的设备时区显示正确的时间?

创建时间戳时,添加本地时区:-

NSTimeZone *localTimeZone = [NSTimeZone systemTimeZone];
[df setTimezone: localTimeZone];

在检索时间戳时,执行相同的方法,以便根据您的时区获得正确的日期和时间。

编辑:-

这是你如何添加时区到你的日期戳,只是找到它从这个源,因为我现在没有时间写代码

   NSDate* referenceDate = [NSDate dateWithTimeIntervalSince1970: 0];
   NSTimeZone* timeZone = [NSTimeZone systemTimeZone];
   int offset = [timeZone secondsFromGMTForDate: referenceDate];
   int current = unix_timestamp - offset;

好的,我发现,上面的日期和时间是正确的。在GMT中,如果将上面的时间戳转换为NSDate,您将得到以下结果:2015-08-12 / 04:22pm。所以加拿大的时区是GMT-6(比2015-08-12 / 04:22pm时间晚6小时),印度的时区是GMT+5.30(比2015-08-12 / 04:22pm时间快5.30小时)。所以我问的问题的结果似乎是纯粹的:)

相关内容

  • 没有找到相关文章

最新更新