我在重新格式化日期以仅显示.year
.month
和.day
时遇到麻烦。输出的打印内容与我输入的字符串相同,但是hour
和minutes
显示零,我的目标是只有一个字符串"yyyy-MM-dd"
,因为我会用它来获取{{1} }进行记录。如果我使用该日期格式,则Xcode会崩溃,因为传入的日期格式为CoreData
。我遵循了Convert string to date in Swift的建议解决方案,但在某些情况下无法正常工作。如何重新格式化日期?
一如既往地非常感谢您。
这是功能:
"yyyy-MM-dd HH:mm:ssZZZZ"
答案 0 :(得分:1)
只需创建一个 String
扩展名和
1。。将String
转换为Date
格式为yyyy-MM-dd HH:mm:ssZZZZ
2。。将Date
转换为String
,格式为yyyy-MM-dd
extension String {
var formattedDate: String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZZZZ"
if let date = dateFormatter.date(from: self) {
print(date)
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter.string(from: date)
}
return nil
}
}
示例:
let dateStr = "2017-04-10 10:33:42GMT"
let formattedDate = dateStr.formattedDate //Output: "2017-04-10"
答案 1 :(得分:0)
func getDateWithoutTime(string: String) -> String? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ssZZZZ"
if let date = dateFormatter.date(from: string) {
dateFormatter.dateFormat = "yyyy-MM-dd"
return dateFormatter.string(from: date)
}
return nil
}
print(getDateWithoutTime1(string:"2019-05-13 12:27:53GMT"))
2019-05-13
答案 2 :(得分:0)
使用以下功能传递日期,当前日期格式和所需的日期格式。
let dateStr = self.convertDateFormaterCommon(currentFormat: "yyyy-MM-dd HH:mm:ss", reqdFormat: "dd MMM, yyyy", dateStr: myObj.transferDate ?? "")
func convertDateFormaterCommon(currentFormat:String, reqdFormat:String, dateStr: String) -> String
{
if dateStr != ""{
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = currentFormat
dateFormatter.locale = Locale(identifier: "en_US")
let date = dateFormatter.date(from: dateStr)
dateFormatter.dateFormat = reqdFormat
return dateFormatter.string(from: date ?? Date())
}
return ""
}