Ios 无法更改swift中我的字符串日期的日期格式
我有一个字符串,因为它包含日期(“2018-05-10T13:00:00”)。 但是,我希望日期格式为“MMM dd,yyyy”。因此,我编写了如下代码Ios 无法更改swift中我的字符串日期的日期格式,ios,iphone,swift,nsdateformatter,date-format,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 = dateFormatt
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”
有什么建议吗?行
let date=dateFormatter.date(from:longDate)
将返回nil,因为dateFormatter
希望日期字符串为MMM dd,yyyy
格式。所以当您使用if date!=无
check,它进入else
部分
相反,您需要的是首先使用正确的格式将日期字符串转换为日期。然后使用另一种格式将其转换回字符串
像这样的东西就行了
func convertDateStringToDate(longDate: String) -> String{
let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
if let date = longDateFormatter.date(from: longDate) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy"
return dateFormatter.string(from: date)
} else {
return longDate
}
}
行
let date=dateFormatter.date(from:longDate)
将返回nil,因为dateFormatter
希望日期字符串为MMM dd,yyyyy
格式。所以当您使用if date!=无
check,它进入else
部分
相反,您需要的是首先使用正确的格式将日期字符串转换为日期。然后使用另一种格式将其转换回字符串
像这样的东西就行了
func convertDateStringToDate(longDate: String) -> String{
let longDateFormatter = DateFormatter()
longDateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
if let date = longDateFormatter.date(from: longDate) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM dd, yyyy"
return dateFormatter.string(from: date)
} else {
return longDate
}
}
您需要以正确的格式设置转换字符串->日期,然后将返回日期转换为所需的格式字符串
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)
}
您需要以正确的格式设置转换字符串->日期,然后将返回日期转换为所需的格式字符串
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)
}
您所做的是错误的,但是您需要设置dateFormatter,它是您的起始日期。因此,从现在起,您只需要设置“yyyy-MM-dd'HH:MM:ss”,并且为了按照您的意愿获取日期,您所做的是错误的但您需要设置dateFormatter,它是您的起始日期。因此,从现在起,您只需设置“yyy-MM-dd'HH:MM:ss”并根据需要获取日期
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
}
只需传递字符串并获得所需的格式输出字符串
注:这仅适用于问题中提到的格式
只需传递字符串并获得所需的格式输出字符串
注意:这仅适用于问题中提到的格式。您试图使用格式MMM dd,yyyy
解析2018-05-10T13:00:00
,显然不匹配。另外,请使用本地化格式和非硬编码的英语格式,如MMM dd,yyyyy
“MMM dd,yyyy”这是我的要求格式。您正在尝试使用格式MMM dd,yyyy
解析2018-05-10T13:00:00
,显然不匹配。此外,请使用本地化格式,而不是硬编码的英语格式,如MMM dd,yyyy
“MMM dd,yyyy”这是我的要求格式。