2016-02-24 3 views
0

Я пытаюсь преобразовать восход и время заката в формат «hh: mm AM/PM» в iOS, используя swift.UNIX time conversion swift iOS

Вот что у меня есть,

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 вечера». Основываясь на моих знаниях, это означает, что когда в Нью-Йорке происходит местное время в 17:39, солнце поднимается в Пекине.

+0

Какой API вы используете, чтобы получить время восхода? – skyline75489

+0

@ skyline75489 forecast.io –

ответ

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".

Пожалуйста, дайте мне знать, если есть лучший способ. Спасибо.

+0

Я хотел бы указать, что https://github.com/MatthewYork/DateTools - отличный инструмент, когда дело доходит до даты преобразования. – skyline75489

+0

@ skyline75489 спасибо, я проверю это. –