我有字符串,因为它包含日期(" 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"
有什么建议吗?
答案 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>