Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何转换日期yyyy-mm-dd';T';HH:mm:ss.SSSZ在swift中_Ios_Iphone_Swift_Xcode_Dateformatter - Fatal编程技术网

Ios 如何转换日期yyyy-mm-dd';T';HH:mm:ss.SSSZ在swift中

Ios 如何转换日期yyyy-mm-dd';T';HH:mm:ss.SSSZ在swift中,ios,iphone,swift,xcode,dateformatter,Ios,Iphone,Swift,Xcode,Dateformatter,我将日期从“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 date

我将日期从“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"
}
但我的转换日期是2018年11月23日


但我的观点是2018年9月11日你的日期格式是错误的。当您在几个月和几分钟内都使用“mm”时,格式中的歧义应该是清楚的

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

嗯-个月

第二种日期格式也是如此


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

dateFormatter.dateFormat = "dd-MM-yyyy"

试试看

你的日期格式化程序错了,应该是
yyyy-MM-dd'T'HH:MM:ss.SSSZ
不是这个
yyy-MM-dd'T'HH:MM:ss.SSSZ

dateFormatter.dateFormat=“dd-mm-yyyy”

dateFormatter.dateFormat=“dd-MM-yyyy”
尝试以下操作:

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

    }

试试这个

 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
输出:

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

你住在印度,对吗?哪里的时区是5:30不一样?你会得到“23”,因为它是“53-30分钟”。为什么?因为您在当月使用了
mm
,而不是
mm
(顺便说一句,第一种格式和第二种格式各使用了两次)。侧注和不相关,但如果让
而不是
,则使用
!=nil
后跟强制展开:
如果让date=dateFromInputString{return dateFormatter.string(from:date)}
@Larme谢谢你的建议。