J'obtiens cette date de l'API au format de chaîne: "2020-01-02T00: 00: 00".
Je voulais maintenant convertir cette date au format Date
. Voilà donc ce que j'ai fait pour ça ...
var utcTime = "\(dic["Due_Date"]!)" //Printing `utcTime` gives "2020-01-02T00:00:00" self.dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" self.dateFormatter.locale = Locale(identifier: "en_US") if let date = dateFormatter.date(from:utcTime) { self.scheduledDate = date //HERE I GET THE DATE AS 2020-01-01 18:30:00 UTC }
La date reçue au format chaîne est "2020-01-02T00: 00: 00". Mais lorsque je le convertis au format Date
, j'obtiens la date au format 2020-01-01 18:30:00 UTC
, ce qui est incorrect.
p >
3 Réponses :
Vous devez également définir le fuseau horaire.
let utcTime = "\(dic["Due_Date"]!)" let dateFormatter = DateFormatter() let timezone = TimeZone.init(secondsFromGMT: 0) dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" dateFormatter.timeZone = timezone! if let date = dateFormatter.date(from:utcTime) { print(date) // 2020-01-02 00:00:00 +0000 }
let inputDate = "2020-01-02T00:00:00" let dateFmt = DateFormatter() dateFmt.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" if let date = dateFmt.date(from: inputDate) { //IF YOU NEED TO CHANGE DATE FORMATE dateFmt.dateFormat = "dd-MMM-yyyy" print(dateFmt.string(from: date)) }
Vous devez définir le fuseau horaire sur UTC (temps universel coordonné)
var utcTime = "2020-01-02T00:00:00" //Printing `utcTime` gives "2020-01-02T00:00:00" let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" dateFormatter.locale = Locale(identifier: "en_US") dateFormatter.timeZone = TimeZone(abbreviation: "UTC") if let date = dateFormatter.date(from:utcTime) { print(date) //HERE I GET THE DATE AS 2020-01-01 18:30:00 UTC }
quel est le résultat attendu?
Si votre fuseau horaire est UTC + 05: 30, la date est correcte.