Ios “日期格式化程序”;HH";在swift中不提供24小时格式的时间

Ios “日期格式化程序”;HH";在swift中不提供24小时格式的时间,ios,iphone,swift,datetime,nsdateformatter,Ios,Iphone,Swift,Datetime,Nsdateformatter,我正在尝试以UTC时区的24小时格式获取currentTime。 当我在不同的设备上调试我的应用程序时,我遇到了一个奇怪的问题 这段代码在我的设备上运行得非常好,但在我表弟的iOS 11.2 iPhone上,它以12小时的格式提供时间。所以我试着在另一台设备上运行这个应用程序,这台设备是iPhoneX,使用相同的操作系统 我不确定出了什么问题,但后来我在其他几台设备上也尝试过,该应用程序在所有其他设备上都运行良好。 另外,我的应用程序的旧版本在堂兄的手机上也运行良好,代码相同 这是我用来获取当前

我正在尝试以UTC时区的24小时格式获取currentTime。 当我在不同的设备上调试我的应用程序时,我遇到了一个奇怪的问题

这段代码在我的设备上运行得非常好,但在我表弟的iOS 11.2 iPhone上,它以12小时的格式提供时间。所以我试着在另一台设备上运行这个应用程序,这台设备是iPhoneX,使用相同的操作系统

我不确定出了什么问题,但后来我在其他几台设备上也尝试过,该应用程序在所有其他设备上都运行良好。 另外,我的应用程序的旧版本在堂兄的手机上也运行良好,代码相同

这是我用来获取当前时间的代码

        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = NSTimeZone(abbreviation: "UTC") as TimeZone!
        dateFormatter.dateFormat = "EEEE"
        dayOfWeekString = dateFormatter.string(from: NSDate() as Date)

        dateFormatter.dateFormat = "HH"
        let CurrentTime = dateFormatter.string(from: NSDate() as Date)
        let CHour = Int(CurrentTime)!

查找解决方案时

日期格式化程序
也会考虑当前区域设置

建议将区域设置设置为固定值

let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")!
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "HH"
let currentTime = dateFormatter.string(from: Date())
但是,使用
日历有一种更可靠的方法。
hour
date组件始终处于24小时模式,您不需要转换为
Int

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "UTC")!
let currentHour = calendar.component(.hour, from: Date())

注意:不要在Swift中使用
NSDate
NSLocale
NSTimeZone
等。使用本机结构。

DateFormatter
还考虑当前区域设置

建议将区域设置设置为固定值

let dateFormatter = DateFormatter()
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")!
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "HH"
let currentTime = dateFormatter.string(from: Date())
但是,使用
日历有一种更可靠的方法。
hour
date组件始终处于24小时模式,您不需要转换为
Int

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "UTC")!
let currentHour = calendar.component(.hour, from: Date())

注意:不要在Swift中使用
NSDate
NSLocale
NSTimeZone
等。使用本机结构。

无关,但是如果您直接将基础数据类型转换为它们的本机SWIFT等效项,则不应使用基础数据类型。直接使用
时区
日期
。此外,您应该遵守Swift命名约定,这是函数和变量名的低CAMELSE。不相关,但是如果您直接将它们转换为它们的本机Swift等价物,则不应该使用基础数据类型。直接使用
时区
日期
。此外,您应该遵守Swift命名约定,即函数名和变量名的小写。