我在設備上打開了 24 小時制,并針對不同的時區測驗了 iOS 應用程式,這為我提供了正確的時間格式。
前任:
- 23:00 PDT 如果 24 小時制開啟
- 如果 24 小時制關閉,則為太平洋夏令時晚上 11 點
但是,如果我將設備中的區域更改為任何時區的日本或法國。我觀察到時間格式忽略了 24 小時制時間開關并始終顯示 12 小時格式。然而,如果區域設定為美國或印度,我會看到正確的結果。
func formattedCloseTime(for date: DateTimeZone) -> String {
let formatter = dateProvider.formatter
formatter.timeZone = date.timeZone
formatter.locale = .autoupdatingCurrent
let stopTimeMinutes = dateProvider.minutesOfDay(from: date.value, timeZone: date.timeZone)
// formatter.dateFormat = stopTimeMinutes == 0
// ? Constants.DateFormat.hourFormat
// : Constants.DateFormat.hourMinuteFormat
formatter.setLocalizedDateFormatFromTemplate(stopTimeMinutes == 0
? Constants.DateFormat.hourFormat
: Constants.DateFormat.hourMinuteFormat)
return formatter.string(from: date.value)
}
我很驚訝為什么它只發生在少數地區。地區和時間格式之間有什么關系嗎?我該如何解決這個案例?
注意:我不想將時間格式固定為 24 小時。我希望它采用用戶的設備設定。
uj5u.com熱心網友回復:
您可以通過宣告在 24 小時內鎖定日期格式
formatter.dateFormat = "HH:mm"
uj5u.com熱心網友回復:
您可以嘗試使用此代碼獲取 24 小時制格式
func changeTimeFormate() {
let dateString = "11:00 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "h:mm a"
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // fixes nil if device time in 24 hour format
let date = dateFormatter.date(from: dateString)
dateFormatter.dateFormat = "HH:mm"
let date24 = dateFormatter.string(from: date ?? Date())
print(date24)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340172.html
