无法在swift中更改字符串日期的日期格式

时间:2018-05-25 07:32:59

标签: ios iphone swift nsdateformatter date-format

我有字符串,因为它包含日期(" 2018-05-10T13:00:00")。 但是,我希望日期格式为" MMM dd,yyyy"。所以,我编写了如下代码。

func convertDateStringToDate(longDate: String) -> String{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "MMM dd, yyyy"
    let date = dateFormatter.date(from: longDate)

    if date != nil {

        let formatter = DateFormatter()
        formatter.dateStyle = .short
        let dateShort = formatter.string(from: date!)

        return dateShort

    } else {

        return longDate
    }
}

并按照以下方式调用

let dateFormattedString = convertDateStringToDate(longDate: (valuesDict.value(forKey: "dateValue") as? String)!)

但是,它再次打印原始值,而不是更新格式。

  

" 2018-05-10T13:00:00"

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

<Drawer some_styles> <View > <Hamburger active={this.state.menuActive} onPress={this._handleMenuButtonPress}/> </View> </Drawer> 将返回nil,因为let date = dateFormatter.date(from: longDate)期望日期字符串为dateFormatter格式。因此,当您使用MMM dd,yyyy检查时,它会进入if date != nil部分。

您需要的是首先使用正确的格式将日期字符串转换为日期。然后使用其他格式将其转换回字符串。

这样的事情可以胜任

else

答案 1 :(得分:1)

func formatDate(dateString: String)-> String{
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
    if let formattedDate = dateFormatter.date(from: dateString) {
        dateFormatter.dateFormat = "MMM dd, yyyy"
         return dateFormatter.string(from: formattedDate)
    }
    return dateString
}

只需传递字符串并获得所需的格式输出字符串。

注意:这仅适用于问题中提到的格式。

答案 2 :(得分:0)

您需要以正确的格式设置convert string-&gt; date,然后将日期转换为所需的格式字符串。

 let dateFormatter = DateFormatter()
 dateFormatter = "yyyy-MM-dd'T'HH:mm:ss"
 if let date = dateFormatter.date(from: longDate) {

    dateFormatter.dateFormat = "MMM dd, yyyy"
    return dateFormatter.string(from: date)
 }

答案 3 :(得分:0)

你做错了.then但是你需要设置dateFormatter这是你的起源日期..所以从现在起你只需要设置dateFormatter.dateFormat = "MMM dd, yyyy"并获取日期作为你的愿望< / p>