【问题标题】:How to convert date yyyy-mm-dd'T'HH:mm:ss.SSSZ in swift [duplicate]如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]
【发布时间】:2018-09-11 11:41:50
【问题描述】:

我将日期从 "yyyy-mm-dd'T'HH:mm:ss.SSSZ" 转换为 "dd-mm-yyyy" 和我的日期是 "2018-09-11T09:53:25.000+0000" 这是我的代码

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-mm-dd'T'HH:mm:ss.SSSZ"

let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")

dateFormatter.dateFormat = "dd-mm-yyyy"

if(dateFromInputString != nil){
   return dateFormatter.string(from: dateFromInputString!)
}
else{
   debugPrint("could not convert date")
   return "N/A"
}

但我正在转换日期 11-23-2018 像这样

但我的方面是 11-09-2018

【问题讨论】:

  • 你住在印度,对吧?时区在哪里 5:30 不同没有?你得到“23”,因为它是“53-30 分钟”。为什么?因为您在月份中使用了mm 而不是MM(顺便说一下,在第一种格式和第二种格式中使用了两次)。
  • 附注且不相关,但使用if let 而不是!= nil 后跟强制展开:if let date = dateFromInputString { return dateFormatter.string(from: date)}
  • @Larme 感谢您的建议。

标签: ios iphone swift xcode dateformatter


【解决方案1】:

您的dateFormat错误。当您在两个个月和分钟中使用“mm”时,格式中的歧义应该已经很清楚了。

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

mm - 分钟

MM - 月

第二种日期格式也是如此。


有关日期格式的更多信息,请参阅this

【讨论】:

    【解决方案2】:

    试试这个

     func GetFormatedDate(date_string:String,dateFormat:String)-> String{
    
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.dateFormat = dateFormat
    
        let dateFromInputString = dateFormatter.date(from: date_string)
        dateFormatter.dateFormat = "dd-MM-yyyy" // Here you can use any dateformate for output date
        if(dateFromInputString != nil){
            return dateFormatter.string(from: dateFromInputString!)
        }
        else{
            debugPrint("could not convert date")
            return "N/A"
        }
    }
    

    这样使用:

    self.GetFormatedDate(date_string: "2018-09-11T09:53:25.000+0000", dateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
    

    输出:

    11-09-2018
    

    【讨论】:

      【解决方案3】:

      应该是

      dateFormatter.dateFormat = "dd-MM-yyyy"
      

      试试看

      【讨论】:

        【解决方案4】:

        你的 dateFormater 错误,应该是 yyyy-MM-dd'T'HH:mm:ss.SSSZ 而不是这个 yyyy-mm-dd'T'HH:mm:ss.SSSZ

        dateFormatter.dateFormat = "dd-mm-yyyy"

        dateFormatter.dateFormat = "dd-MM-yyyy"

        【讨论】:

          【解决方案5】:

          试试这个:

             extension String {
          
                  func convertDate() -> String {
                      let dateFormatter = DateFormatter()
                      dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
          
                      if let dateInLocal = dateFormatter.date(from: self) {
                          dateFormatter.dateFormat = "dd-MM-yyyy"
                          return dateFormatter.string(from: dateInLocal)
                      }
                      return "NA"
                  }
          
              }
          

          【讨论】:

            【解决方案6】:
            let dateFormatter = DateFormatter()
             dateFormatter.locale = Locale(identifier: "en_US_POSIX")
             dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
            
             let dateFromInputString = dateFormatter.date(from: "2018-09-11T09:53:25.000+0000")
            
             dateFormatter.dateFormat = "dd-MM-yyyy"
            
             if(dateFromInputString != nil){
                 return dateFormatter.string(from: dateFromInputString!)
             }
             else{
                 debugPrint("could not convert date")
                 return "N/A"
             }
            

            【讨论】:

              猜你喜欢
              • 2016-11-25
              • 1970-01-01
              • 2019-08-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-05-05
              • 2013-05-01
              相关资源
              最近更新 更多