malcommac / SwiftDate

🐔 Toolkit to parse, validate, manipulate, compare and display dates, time & timezones in Swift.
MIT License
7.61k stars 767 forks source link

iOS 17 Issue with DateFormatter with respect to Locale. #825

Open swamiDev080390 opened 1 month ago

swamiDev080390 commented 1 month ago

We observed that the Locale in the Foundation framework is giving different type of value for iOS 16 and iOS 17. We are assuming that the Locale returned in iOS 17 is causing issues in getting the time in AM/PM from 24 Hours format with DateFormatter when user changes the time format from 24 Hours to 12 hours respectively. Need assistance to resolve the issue.

DateRepresentable.swift -> Line Number 497.


func formatterForRegion(format: String? = nil, configuration: ((inout DateFormatter) -> Void)? = nil) -> DateFormatter {
        var formatter = self.formatter(format: format, configuration: {
            $0.timeZone = self.region.timeZone
            $0.calendar = self.calendar
            $0.locale = self.region.locale
        })
        configuration?(&formatter)
        return formatter
    }
image

Logs from XCode Console when TimeFormat in Device Settings is 12 Hours. iOS 17 formatterForRegion: format = Optional("ha") toString: .custom format = ha, Value = 15

iOS 16 formatterForRegion: format = Optional("ha") toString: .custom format = ha, Value = 3PM