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
。
Date
s 表示 instants/points 时间 - “从参考点开始 x 秒”。它们不是“自参考点 在某个位置 以来的 x 秒”,因此时区不是它们的一部分。 “设置 Date
的时区”是没有意义的,“设置 Double
的小数位数”也是没有意义的。
您似乎真的想存储一个 EKCalendarEvent
。好吧,EKCalendarEvent
s do 有一个时区,因为它们是发生在特定 instant/day (occurrenceDate
), in some timezone (timeZone
) 的事件。所以你只需要设置EKEvent
的timeZone
属性,而不是Date
.
我试图在我的应用程序中将我的 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
。
Date
s 表示 instants/points 时间 - “从参考点开始 x 秒”。它们不是“自参考点 在某个位置 以来的 x 秒”,因此时区不是它们的一部分。 “设置 Date
的时区”是没有意义的,“设置 Double
的小数位数”也是没有意义的。
您似乎真的想存储一个 EKCalendarEvent
。好吧,EKCalendarEvent
s do 有一个时区,因为它们是发生在特定 instant/day (occurrenceDate
), in some timezone (timeZone
) 的事件。所以你只需要设置EKEvent
的timeZone
属性,而不是Date
.