UNIX 时间转换 swift iOS
UNIX time conversion swift iOS
我正在尝试使用 swift 将日出和日落时间转换为 iOS 中的 "hh:mm AM/PM" 格式。
这是我的,
UNIX时间:1456239086(这是洛杉矶的日出时间)
func unixTimeConvertion(unixTime: Double) -> String {
let time = NSDate(timeIntervalSince1970: unixTime)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.stringFromDate(time)
}
我运行遇到的问题是,不管我用过哪个城市,东京、北京、波士顿。转换后,"hh:mm AM/PM" 始终是我所在位置的当地时间。例如,我在纽约,我知道波士顿的日出时间是“6:39 AM”,这是正确的。当我请求北京的日出时间时,它显示“5:39 PM”。据我所知,这意味着纽约当地时间5:39下午,北京太阳升起。
经过一些研究,我发现 UNIX 时间戳是从特定时间点开始经过的秒数。因此,在我的情况下,需要时区信息。
这是解决问题的更新代码。
func unixTimeConvertion(unixTime: Double) -> String {
let time = NSDate(timeIntervalSince1970: unixTime)
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: timeZoneInfo)
dateFormatter.locale = NSLocale(localeIdentifier: NSLocale.systemLocale().localeIdentifier)
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.stringFromDate(time)
}
timeZoneInfo 包含时区信息,例如 "America/Los_Angeles"。
如果有更好的方法请告诉我。谢谢。
我正在尝试使用 swift 将日出和日落时间转换为 iOS 中的 "hh:mm AM/PM" 格式。
这是我的,
UNIX时间:1456239086(这是洛杉矶的日出时间)
func unixTimeConvertion(unixTime: Double) -> String {
let time = NSDate(timeIntervalSince1970: unixTime)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.stringFromDate(time)
}
我运行遇到的问题是,不管我用过哪个城市,东京、北京、波士顿。转换后,"hh:mm AM/PM" 始终是我所在位置的当地时间。例如,我在纽约,我知道波士顿的日出时间是“6:39 AM”,这是正确的。当我请求北京的日出时间时,它显示“5:39 PM”。据我所知,这意味着纽约当地时间5:39下午,北京太阳升起。
经过一些研究,我发现 UNIX 时间戳是从特定时间点开始经过的秒数。因此,在我的情况下,需要时区信息。
这是解决问题的更新代码。
func unixTimeConvertion(unixTime: Double) -> String {
let time = NSDate(timeIntervalSince1970: unixTime)
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone(name: timeZoneInfo)
dateFormatter.locale = NSLocale(localeIdentifier: NSLocale.systemLocale().localeIdentifier)
dateFormatter.dateFormat = "hh:mm a"
return dateFormatter.stringFromDate(time)
}
timeZoneInfo 包含时区信息,例如 "America/Los_Angeles"。
如果有更好的方法请告诉我。谢谢。