如何将日期重新格式化为仅年月日?迅速

时间:2019-05-13 12:17:13

标签: swift date date-formatting

我在重新格式化日期以仅显示.year .month.day时遇到麻烦。输出的打印内容与我输入的字符串相同,但是hourminutes显示零,我的目标是只有一个字符串"yyyy-MM-dd",因为我会用它来获取{{1} }进行记录。如果我使用该日期格式,则Xcode会崩溃,因为传入的日期格式为CoreData。我遵循了Convert string to date in Swift的建议解决方案,但在某些情况下无法正常工作。如何重新格式化日期? 一如既往地非常感谢您。 这是功能:

"yyyy-MM-dd HH:mm:ssZZZZ"

3 个答案:

答案 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 ""
}