我正在尝试使用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”,这是正确的。当我要求北京的日出时间时,显示“下午5:39”。据我所知,这意味着当地时间是纽约时间下午5点39分,北京的太阳升起。
答案 0 :(得分:0)
经过一番研究,我发现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”。
如果有更好的方法,请告诉我。谢谢。