DateFormatter 的 AM / PM 問題
Published in
Aug 11, 2021
當時間字串包含 AM / PM 資訊,我們想用 DateFormatter 將字串轉成 Date 時,需注意以下問題 :
當字串包含 AM / PM,iOS 的 24 小時制關掉時
let dateString = "2000/2/7 11:12 AM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/M/d h:m a"
let date = dateFormatter.date(from: dateString)
字串可以順利轉成 Date,不用做任何修改。
當字串包含 AM / PM,iOS 的 24 小時制打開時
let dateString = "2000/2/7 11:12 AM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/M/d h:m a"
dateFormatter.locale = Locale(identifier: "en")
let date = dateFormatter.date(from: dateString)
需要特別設定 locale, identifier 傳入 en,因為 AM / PM 是英文的格式。
當字串包含上午 / 下午
let dateString = "2000/2/7 11:12 上午"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy/M/d h:m a"
dateFormatter.locale = Locale(identifier: "zh")
let date = dateFormatter.date(from: dateString)
不管 iOS 的 24 小時制是否打開,都要設定 locale, identifier 傳入 zh,因為上午 / 下午是中文的格式。