UNIX时间转换swift iOS

时间:2016-02-24 02:19:14

标签: ios swift nsdate unix-timestamp

我正在尝试使用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分,北京的太阳升起。

1 个答案:

答案 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”。

如果有更好的方法,请告诉我。谢谢。