Преобразование времени в формат строки на основе настроек iPhone (13: 00 vs 1: 00PM) в Swift

В настоящее время у меня есть целочисленная переменная для часа текущего дня, я рассчитал ее так:

let tz = NSTimeZone.defaultTimeZone()
let now = NSCalendar.currentCalendar().componentsInTimeZone(tz, fromDate: NSDate())
let currHour: Int = now.hour //6 for 6:35PM (current time)

Как преобразовать это в строку с учетом текущих настроек времени iPhone. Например, мой телефон настроен на 24-часовое время, в то время как другой iPhone нет. Используя приложение Starbucks в качестве примера, глядя на местные магазины, он скажет либо «открыто до 22:00» на моем телефоне или «открыто до 10:00» на другом телефоне.

DefaultTimeZone имеет значение America / New_York в делегате приложения.

1 ответ

  1. NSDateFormatter делать это автоматически. Просто установите значение timeStyle.ShortStyle.

    let formatter = NSDateFormatter()
    formatter.dateStyle = .NoStyle
    formatter.timeStyle = .ShortStyle
    let timeString = formatter.stringFromDate(NSDate())
    

    Значение для timeStringбудет соответствовать языковому стандарту пользователя и его настройкам устройства.