如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]

Posted

技术标签:

【中文标题】如何快速转换日期 yyyy-mm-dd\'T\'HH:mm:ss.SSSZ [重复]【英文标题】: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 感谢您的建议。 【参考方案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"
 

【讨论】:

以上是关于如何快速转换日期 yyyy-mm-dd'T'HH:mm:ss.SSSZ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法从格式“yyyy-MM-dd'T'HH:mm:ss+00:00”创建日期

如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?

为啥我无法解析这种日期格式 yyyy-MM-dd'T'HH:mm:ss.SSSZ?

将字符串(原子日期)转换为日期

将UTC日期格式转换为本地nsdate

将这种“ yyyy-MM-dd'T'HH:mm:ss.SSSXXX”格式的字符串转换为LocalDate