如何在 iOS 的不同语言环境中格式化日期范围(只有一年字符串)?
How to format a date range (with only one year string) in different locale's in iOS?
英文日期字符串:Jan 18 - Jan 26, 2018
韩文日期字符串不正确:Jan 18 - 2018 Jan 26
韩语中应该发生的事情:2018 Jan 18 - Jan 26
(不完全正确的韩语,只是指年份的位置。查看已接受的答案以查看正确的韩语日期格式)
现在这需要日期格式化程序,但您必须硬编码哪个日期格式化程序具有年份,因此韩文日期看起来不正确。
是否可以在 Swift/Objc 中做到这一点,而不是将年份字符串放在日期范围的两侧?
使用 DateIntervalFormatter
:
let sd = Calendar.current.date(from: DateComponents(year: 2018, month: 1, day: 18))!
let ed = Calendar.current.date(from: DateComponents(year: 2018, month: 1, day: 26))!
let dif = DateIntervalFormatter()
dif.dateStyle = .medium
dif.timeStyle = .none
dif.locale = Locale(identifier: "en_US")
let resEN = dif.string(from: sd, to: ed)
dif.locale = Locale(identifier: "ko_KR")
let resKO = dif.string(from: sd, to: ed)
这导致:
Jan 18 – 26, 2018
2018. 1. 18. ~ 2018. 1. 26.
输出与您在问题中显示的不完全相同,但输出适用于给定的语言环境。
英文日期字符串:Jan 18 - Jan 26, 2018
韩文日期字符串不正确:Jan 18 - 2018 Jan 26
韩语中应该发生的事情:2018 Jan 18 - Jan 26
(不完全正确的韩语,只是指年份的位置。查看已接受的答案以查看正确的韩语日期格式)
现在这需要日期格式化程序,但您必须硬编码哪个日期格式化程序具有年份,因此韩文日期看起来不正确。
是否可以在 Swift/Objc 中做到这一点,而不是将年份字符串放在日期范围的两侧?
使用 DateIntervalFormatter
:
let sd = Calendar.current.date(from: DateComponents(year: 2018, month: 1, day: 18))!
let ed = Calendar.current.date(from: DateComponents(year: 2018, month: 1, day: 26))!
let dif = DateIntervalFormatter()
dif.dateStyle = .medium
dif.timeStyle = .none
dif.locale = Locale(identifier: "en_US")
let resEN = dif.string(from: sd, to: ed)
dif.locale = Locale(identifier: "ko_KR")
let resKO = dif.string(from: sd, to: ed)
这导致:
Jan 18 – 26, 2018
2018. 1. 18. ~ 2018. 1. 26.
输出与您在问题中显示的不完全相同,但输出适用于给定的语言环境。