我正在存储记录,此记录附有日期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}}
答案 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中存储时间,在每个地方都可以存储时间:)