gpt4 book ai didi

ios - NSDate 比用户本地时间晚一小时

转载 作者:行者123 更新时间:2023-11-28 13:07:06 24 4
gpt4 key购买 nike

我目前根据美国/东部时区将日期存储在 Parse 中。但是,当我从 Parse 获取对象并设置它们的日期属性时,时间总是显示为比预期时间早一小时。

我相信这是夏令时的结果,但我不确定如何在不硬编码额外增加一个小时的情况下解决这个问题。

var objectDate = object.createdAt! // object is from Parse query
let calendar = NSCalendar.currentCalendar() // I am in Pacific timezone
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "E, M/d, h:mm a"
dateFormatter.timeZone = NSTimeZone(name: "US/Eastern") // date is 8 am Eastern time
var formattedDate = dateFormatter.stringFromDate(objectDate)
// formattedDate prints as 4 am, but should be 5 am

最佳答案

将日期视为不包含时区会有所帮助。我的意思是,当您说“立即保存时间和日期”时,NSDate 对象应该使用 UTC 时间,因为它真的没关系。当您查看日期时,您从特定时区或格式角度查看它:

所以,它可能是这样的:

//this saves the date as NOW, whenever it is called
var date = NSDate()
//it doesn't matter what timezone you want it to save in, because it always
//saves in a way that it KNOWS when it occurred

//when I want to view the value of the date from a "PST" timezone perspective
//I need to use an NSDateFormatter to set my point of view for the date
let formatter = NSDateFormatter()
formatter.timeZone = NSTimeZone(name: "PST") //sets formatter to show what PST zone is
formatter.dateFormat = "hh:mm a z" //formats the time to show as 07:30 PST

//now that we have the date formatted, we could do something like set a label to it
@IBOutlet var dateLabel: UILabel!
dateLabel.text = formatter.stringFromDate(date)

因此,正如您在上面看到的,日期并未真正保存为任何特定时区。它只是以一种代码可以计算出确切时间/日期的方式保存。然后,当您引用它并使用 NSDateFormatter 时,您可以根据需要查看日期。

关于ios - NSDate 比用户本地时间晚一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com