以 24 小时格式显示特定时区的并发症当前时间

Display complication current time in 24 hour format for specific timezone

我正在制作复杂功能,并希望在复杂功能中使用 24 小时格式显示 "UTC" 时区时间。

CLKTimeTextProvider 可以工作,但它似乎只使用用户喜欢的默认格式,而我需要强制它始终显示 24 小时制。

有什么想法吗?有没有 属性 我没看到?

switch family {            
case .UtilitarianLarge:
        let template = CLKComplicationTemplateUtilitarianLargeFlat()
        template.imageProvider = nil
        template.textProvider = CLKTimeTextProvider(date: NSDate(), timeZone: NSTimeZone(name: "UTC"))
        return CLKComplicationTimelineEntry(date: date, complicationTemplate: template)

目前没有 CLKTimeTextProvider 属性 可以让您覆盖用户的区域和区域设置。

除了 submitting a feature request 之外,您可以通过将日期转换为 24 小时格式的时间来解决此问题,然后使用 CLKSimpleTextProvider

显示本地化的字符串
let dateFormatter = NSDateFormatter()
let localeFormatString = NSDateFormatter.dateFormatFromTemplate("HH:mm", options: 0, locale: NSLocale.currentLocale())
dateFormatter.dateFormat = localeFormatString
dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC")
template.textProvider = CLKSimpleTextProvider(text: dateFormatter.stringFromDate(NSDate()))

更新:

根据您的评论,您可以使用从 00:00 午夜开始计算的 CLKRelativeDateStyleTimer 来完成您想要的。由于它计算的是小时和分钟,所以它会恰好以 24 小时格式计算。您必须在午夜更新您的并发症,以便在第二天将其重置为 00:00。