Swift 将 Unix 时间戳转换为带时区的日期并将其保存到 EKEvent

Swift convert Unix timestamp to Date with timezone and save it to EKEvent

我试图在我的应用程序中将我的 unix 时间戳(Int)转换为 Date 类型。我找到了一个解决方案

let str = timeValue as? NSNumber
return Date(timeIntervalSince1970: str.doubleValue)

此解决方案有效,但我该如何设置时区。我找到了另一个使用格式化程序但格式化程序 return string.

的解决方案
func convertDateTime(timeValue: Int) -> String {
    let truncatedTime = Int(timeValue)
    let date = Date(timeIntervalSince1970: TimeInterval(truncatedTime))
    let formatter = DateFormatter()
    formatter.timeZone = TimeZone(abbreviation: "GMT+8")
    formatter.dateFormat = "dd/MM/yyyy hh:mm a"

    return formatter.string(from: date)
}

谁能回答我怎么做?

已编辑:我想将其另存为 EKEvent

Dates 表示 instants/points 时间 - “从参考点开始 x 秒”。它们不是“自参考点 在某个位置 以来的 x 秒”,因此时区不是它们的一部分。 “设置 Date 的时区”是没有意义的,“设置 Double 的小数位数”也是没有意义的。

您似乎真的想存储一个 EKCalendarEvent。好吧,EKCalendarEvents do 有一个时区,因为它们是发生在特定 instant/day (occurrenceDate), in some timezone (timeZone) 的事件。所以你只需要设置EKEventtimeZone属性,而不是Date.