[英]Swift NSDateFormatter not using correct locale and format
这是我的代码:
let currentDate = NSDate()
let usDateFormat = NSDateFormatter()
usDateFormat.dateFormat = NSDateFormatter.dateFormatFromTemplate("d MMMM y", options: 0, locale: NSLocale(localeIdentifier: "en-US"))
cmt.date = usDateFormat.stringFromDate(currentDate)
我期待得到“2015 年 10 月 15 日”,但我得到了“2015 年 10 月 15 日”。 本月采用瑞典语。
我做错了什么? 语言环境和格式都是错误的。
尝试这个:
let dateString = "2015-10-15"
let formater = NSDateFormatter()
formater.dateFormat = "yyyy-MM-dd"
print(dateString)
formater.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let date = formater.dateFromString(dateString)
print(date)
斯威夫特 3 Xcode 8
let dateString = "2015-10-15"
let formater = DateFormatter()
formater.dateFormat = "yyyy-MM-dd"
print(dateString)
formater.locale = Locale(identifier: "en_US_POSIX")
let date = formater.date(from: dateString)
print(date!)
我希望它有帮助。
查看dateFormatFromTemplate
的文档。 它指出:
返回值
一个本地化的日期格式字符串,表示模板中给定的日期格式组件,根据 locale 指定的区域设置适当排列。
返回的字符串可能不完全包含模板中给出的那些组件,但可能——例如——应用了特定于区域设置的调整。
这就是安排和语言的问题。 要获取您要查找的日期,您需要按如下方式设置日期格式化程序的dateFormat
和locale
:
let currentDate = NSDate()
let usDateFormat = NSDateFormatter()
usDateFormat.dateFormat = "d MMMM y"
usDateFormat.locale = NSLocale(localeIdentifier: "en_US")
cmt.date = usDateFormat.stringFromDate(currentDate)
更好的 Swift 3/3.1 解决方案:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
试试这个代码
let locale1:Locale = NSLocale(localeIdentifier: "en_US") as Locale
var date = Date().description(with: locale1)
print(date)
//2017 年 4 月 3 日星期一...
你可以在 Swift5 中使用 Date 扩展:
extension Date {
var timestamp: String {
let dataFormatter = DateFormatter()
dataFormatter.locale = Locale(identifier: "en_US_POSIX")
dataFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss.SSSS"
return String(format: "%@", dataFormatter.string(from: self))
}
}
您可以通过以下方式获取时间戳
print("Now: \(Date().timestamp)")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.