使用Swift 4,有没有办法获取语言环境的日期格式的字符串表示形式?根据iPhone的语言环境设置,我想确定格式是yyyy / mm / dd还是mm / dd / yyyy。
我已经找到了更改日期格式或从语言环境的格式中获取日期的所有方法,但是还无法弄清楚如何获取实际格式。
答案 0 :(得分:5)
使用DateFormatter dateFormat(fromTemplate:options:locale:)
。
let userFormat = DateFormatter.dateFormat(fromTemplate: "yyyyMMdd", options: 0, locale: Locale.current)
在美国,它返回MM/dd/yyyy
。在德国,这给出了dd.MM.yyyy
。
如果您需要获取适当的时间格式(同时考虑到用户选择的12/24小时时间格式),请使用jms
模板。 j
是一种特殊的格式说明符,仅与模板一起使用,根据合适的时间,每小时返回h
或H
。
另一个可能的选择是创建一个DateFormatter
,设置所需的dateStyle
和timeStyle
,然后读取dateFormat
属性:
var mydf = DateFormatter()
mydf.dateStyle = .long // set as desired
mydf.timeStyle = .full // set as desired
print(mydf.dateFormat)
对于美国,这给出了:
MMMM d,y'at'h:mm:ss zzzz
对于德国,这给出了:
d。 MMMM y'um'HH:mm:ss zzzz