使用 dd-MM-yyyy 将字符串转换为日期 get nil in Xcode 8 in Swift 3.0

Converting String to Date using dd-MM-yyyy get nil in Xcode 8 in Swift 3.0

如果我选择像 let dateString = "2014-01-12" 这样的日期,我将如何将字符串转换为

dateFormatter.dateFormat = "yyyy-MM-dd"  

然后按以下格式

dateFormatter.dateFormat = "dd-MM-yyyy"

我在 Xcode 8 在 Swift 3.0

中得到零值
{

let dateString = "2014-01-12"
dateFormatter.locale = Locale(identifier:"ja_JP")
dateFormatter.dateFormat = "dd-MM-yyyy"
print(dateFormatter.date(from:dateString))
}

   let dateString = "2014-01-12"

    dateFormatter.dateFormat = "yyyy-MM-dd"
    var s = dateFormatter.date(from: dateString)! as Date

    dateFormatter.dateFormat = "dd-MM-yyyy"

    s = dateFormatter.date(from: dateString)! as Date
   print("SecondDate\(s)")

在 Xcode 7 中工作正常。

如果你想将日期格式 yyyy-MM-dd 转换为 dd-MM-yyyy 那么你的最后一行应该是。

let dateString = "2014-01-12"

dateFormatter.dateFormat = "yyyy-MM-dd"
var s = dateFormatter.date(from: dateString)
dateFormatter.dateFormat = "dd-MM-yyyy"

像这样格式化日期

let dateStr = dateFormatter.string(from: s)

而不是

s = dateFormatter.date(from: dateString)! as Date

您只需更改 DateFormatter 的格式并将其获取为 String

需要将日期字符串更改为 "date string" as Date 然后您可以更改为您的特定格式。对于每种格式,您都需要先执行此操作。

您可以使用下面的代码。

Swift 3

extension String {
    func changeDate(_ mydate:String) -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = DateFormatter.Style.long
        dateFormatter.dateFormat = "yyyy-MM-dd"
        let convertedDate = dateFormatter.date(from: mydate)
        dateFormatter.dateFormat = "dd-MM-yyyy"
        let date = dateFormatter.string(from: convertedDate!)
        return date
    }
}

你可以用这个

let dateString = "2014-01-12"
        let dateFormatterNew = DateFormatter()
        dateFormatterNew.dateFormat = "yyyy-MM-dd"
        let date = dateFormatterNew.date(from: dateString)! as Date

        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd-MM-yyyy"
        let dateNew = dateFormatter.string(from: date )
        print(dateNew)

这样做

    let datestring = "2014-01-12"
    let dateF = NSDateFormatter()
    dateF.dateFormat = "yyyy-MM-dd"

    let firstDate = dateF.dateFromString(datestring)
    dateF.dateFormat = "dd-MM-yyyy"
    let newDateString = dateF.stringFromDate(firstDate!)

    print("NEW DATE FORMAT IS  : \(newDateString)")