将英语日期转换为法语的最佳方法,nsdate,本地化
best way to convert date in English to French, nsdate, localization
我的 属性 dob
of Patient
对象是 String
并且当前存储 12-Jan-2017
我想将它转换为法语语言环境,例如 12-Janv.-2017
。
以下是我的步骤:
正在将 12-Jan-2017
转换为 1954-09-07 04:00:00 UTC
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.init(localeIdentifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd-MMM-yyyy"
let date = dateFormatter.dateFromString("12-Jan-2017") // now date is 1954-09-07 04:00:00 UTC
接下来我必须将 dateFormatter
的 locale
设置为 fr
dateFormatter.locale = NSLocale.init(localeIdentifier: "fr")
let frenchDate = dateFormatter.stringFromDate(date!) // now it is 12-Janv.-2017
我认为这不是进行转换的最佳方式。有没有其他有效的方法。欢迎任何评论。
(NS)DateFormatter
具有将日期转换为字符串表示的方法,反之亦然。没有 (built-in) 方法转换
从一种日期格式直接转换为另一种格式,无需中间
(NS)Date
。所以你做的很好。
一些建议:
- 使用可选绑定而不是强制展开以避免崩溃
在运行时,如果输入字符串的格式无效。
- 使用
DateFormatter.dateFormat(fromTemplate:...)
得到
适用于所选语言环境的日期格式字符串。
那么您的代码将是(Swift 3):
let inputDate = "12-Jan-2017"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd-MMM-yyyy"
if let date = dateFormatter.date(from: inputDate) {
dateFormatter.locale = Locale(identifier: "fr")
dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "dd-MMM-yyyy", options: 0, locale: dateFormatter.locale)
let frenchDate = dateFormatter.string(from: date)
print(frenchDate) // 12 janv. 2017
} else {
print("invalid input date")
}
我的 属性 dob
of Patient
对象是 String
并且当前存储 12-Jan-2017
我想将它转换为法语语言环境,例如 12-Janv.-2017
。
以下是我的步骤:
正在将 12-Jan-2017
转换为 1954-09-07 04:00:00 UTC
let dateFormatter = NSDateFormatter()
dateFormatter.locale = NSLocale.init(localeIdentifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd-MMM-yyyy"
let date = dateFormatter.dateFromString("12-Jan-2017") // now date is 1954-09-07 04:00:00 UTC
接下来我必须将 dateFormatter
的 locale
设置为 fr
dateFormatter.locale = NSLocale.init(localeIdentifier: "fr")
let frenchDate = dateFormatter.stringFromDate(date!) // now it is 12-Janv.-2017
我认为这不是进行转换的最佳方式。有没有其他有效的方法。欢迎任何评论。
(NS)DateFormatter
具有将日期转换为字符串表示的方法,反之亦然。没有 (built-in) 方法转换
从一种日期格式直接转换为另一种格式,无需中间
(NS)Date
。所以你做的很好。
一些建议:
- 使用可选绑定而不是强制展开以避免崩溃 在运行时,如果输入字符串的格式无效。
- 使用
DateFormatter.dateFormat(fromTemplate:...)
得到 适用于所选语言环境的日期格式字符串。
那么您的代码将是(Swift 3):
let inputDate = "12-Jan-2017"
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "dd-MMM-yyyy"
if let date = dateFormatter.date(from: inputDate) {
dateFormatter.locale = Locale(identifier: "fr")
dateFormatter.dateFormat = DateFormatter.dateFormat(fromTemplate: "dd-MMM-yyyy", options: 0, locale: dateFormatter.locale)
let frenchDate = dateFormatter.string(from: date)
print(frenchDate) // 12 janv. 2017
} else {
print("invalid input date")
}