使用dd-MM-yyyy将字符串转换为日期在Swift 3.0中的Xcode 8中获取nil

时间:2016-11-11 05:31:34

标签: ios swift swift3 nsdateformatter

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

dateFormatter.dateFormat = "yyyy-MM-dd"  

然后采用以下格式

dateFormatter.dateFormat = "dd-MM-yyyy"

我在Swift 3.0中的Xcode 8中获得了nil值

{

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中,它可以正常工作。

4 个答案:

答案 0 :(得分:2)

如果您想将日期格式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

答案 1 :(得分:2)

需要将日期字符串更改为"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
    }
}

答案 2 :(得分:1)

您可以使用此

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)

答案 3 :(得分:0)

这样做

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