获取NSDate以根据它的secondsFromGMT显示其他时区的日期

时间:2016-03-09 02:24:11

标签: ios swift nsdate nstimeinterval

我正在存储记录,此记录附有日期pumpTimeNSDate

如果创建此记录的设备与加载记录的设备位于不同的时区,则加载记录的设备显示的日期与创建记录的设备显示的日期不同。我希望他们两个都显示相同的日期。

我理解这是因为NSDateFormatter()考虑到与GMT的距离, if let pumpTimeNSDate = objects[indexPath.row].objectForKey("pumpTimeNSDate") as? NSDate { let formatter = NSDateFormatter() formatter.dateFormat = "E dd, H:mm" if let originTimeOffsetObject = objects[indexPath.row].objectForKey("originTimeOffset") as? NSTimeInterval { // not sure how to use originTimeOffsetObject } else { // if timeoffset do not exist on DB createdAt = formatter.stringFromDate(pumpTimeNSDate) } } 会根据用户当前时区调整NSDate(这只是时间参考)。

如何获取在不同时区加载记录的设备,以显示在创建记录的设备上显示的内容?

注意:originTimeOffsetObject存储GMT与创建记录的设备的距离。

{{1}}

2 个答案:

答案 0 :(得分:1)

您可以在NSDateFormatter上创建并设置NSTimeZone。由于你知道偏移量,你可以:

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle   
dateFormatter.timeStyle = .MediumStyle
dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) // Update to your value
dateFormatter.stringFromDate(NSDate()) // Display your date

答案 1 :(得分:1)

在差异时区中,您的日期值仍然相同,但它是在当前时区中格式化的。

因此,如果你想在每个地方显示时间相同,你可以使用NSDateFormatter将时间转换为NSString,时区是你的默认固定时区。或者您可以在NSString中存储时间,在每个地方都可以存储时间:)

相关问题