Swift NSDateFormatter没有使用正确的语言环境和格式

时间:2015-10-15 09:38:28

标签: ios swift nsdate nsdateformatter

这是我的代码:

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日"",但我得到" oktober 15,2015"。这个月是瑞典语的地方。

我做错了什么?语言环境和格式都是错误的。

5 个答案:

答案 0 :(得分:22)

试试这个:

$sqlStatement2 = $this->db->prepare("UPDATE users SET password=:password, oldPassword=:oldpassword WHERE username = :username");
$sqlStatement2->bindParam(":password", $queryPassword, PDO::PARAM_STR);
$sqlStatement2->bindParam(":oldpassword", $values["password"] , PDO::PARAM_STR);
$sqlStatement2->bindParam(":username", $username, PDO::PARAM_STR);
$sqlStatement2->execute();

Swift 3 Xcode 8

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)

我希望它有所帮助。

答案 1 :(得分:14)

查看dateFormatFromTemplate的{​​{3}}。它声明:

  

返回值

     

表示日期的本地化日期格式字符串   模板中给出的格式组件,适合于   locale指定的语言环境。

     

返回的字符串可能不完全包含给定的组件   模板,但可能 - 例如 - 具有特定于区域设置的调整   应用

这就是关于安排和语言的问题。要获取您要查找的日期,您需要设置日期格式化程序dateFormatlocale,如下所示:

let currentDate = NSDate()
let usDateFormat = NSDateFormatter()
usDateFormat.dateFormat = "d MMMM y"
usDateFormat.locale = NSLocale(localeIdentifier: "en_US")
cmt.date = usDateFormat.stringFromDate(currentDate)

答案 2 :(得分:3)

试试这段代码

let locale1:Locale = NSLocale(localeIdentifier: "en_US") as Locale
var date =  Date().description(with: locale1)
print(date)

// 2017年4月3日星期一......

答案 3 :(得分:3)

更好的Swift 3 / 3.1解决方案:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")

答案 4 :(得分:0)

您可以在Swift5中使用日期扩展名:

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)")