Décalage horaire

J'ai une donnée date en CET, heure de Paris sous forme de String (dans dateString) et je souhaiterais la convertir en NSDate et je suis en train de devenir chèvre.


 


Voici mon code



let dateString = "2016-12-25 06:55:00"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"
dateFormatter.timeZone = NSTimeZone(abbreviation: "CET")
if let date = dateFormatter.dateFromString(dateString) {
    print("s : \(date)")
}
else {
    print("invalid")
}

A priori le log affiche la date en GMT donc ici :


 


2016-12-25 05:55:00 +0000


 


Avec ça je devrais m'en sortir, mais la conversion n'aboutie pas quand je remplace la première ligne par



let dateString = "2016-12-25 16:55:00"

Peut être que je m'y prend mal. D'avance merci de votre aide.


Réponses

  • "hh" vs "HH" ;)


  • A priori j'ai trouvé "HH" à  la place de "hh"



    import Foundation

    let dateString = "2016-12-25 16:55:00"
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateFormatter.timeZone = NSTimeZone(abbreviation: "CET")
    if let date = dateFormatter.dateFromString(dateString) {
        print("s : \(date)")
    }
    else {
        print("invalid")
    }
  • iLandesiLandes Membre
    novembre 2015 modifié #4

    Merci Larme j'ai trouvé en même temps que ta réponse 


     


    Tu confirme que le print / les log affiche bien en GMT ?


     


    Pour être plus clair : le code mis à  jour :



    import Foundation

    // Date en CET à  convertir
    let dateString = "2016-12-25 16:55:00"


    // Création du formatter
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
    dateFormatter.timeZone = NSTimeZone(abbreviation: "CET")

    // Affichage des résultats
    if let dateGMT = dateFormatter.dateFromString(dateString) {
        print("Date GMT : \(dateGMT)")
        let dateFromString = dateFormatter.stringFromDate(dateGMT)
        print("Date CET : \(dateFromString)")
    }
    else {
        print("invalid")
    }
  • Je mets toujours trois plombes avec les dates et les fuseaux horaires... Je ne sais jamais s'il faut un +, un -, etc.


     


    Mais voici le truc :


    Quand tu loggues une NSDate, il y a le +0000 (ou +0100, -1000 etc.) qui t'indique le fuseau horaire.


     


    Je pars toujours d'un exemple dont je connais les heures de départ et de fin après avoir effectué mes tests.


Connectez-vous ou Inscrivez-vous pour répondre.