IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

c# Formatage de DateTime


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut c# Formatage de DateTime
    Bonjour à tous

    Voici un enieme problème de formatage de datetime
    Mon objectif est d'avoir une DateTime au format suivant: yyyy-MM-ddT:HH:mm:ssZ
    Par exemple: 2015-12-25T09:30:10Z
    J'ai regardé les patterns disponibles en utilisant le code J'ai essayé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    string[] infos = System.Globalization.DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns();
                foreach (string s in infos)
                { 
                    Console.WriteLine(s);
                }
    J'obtiens le résultat:

    dd/MM/yyyy
    dd/MM/yy
    dd.MM.yy
    dd-MM-yy
    yyyy-MM-dd
    dddd d MMMM yyyy
    d MMM yy
    d MMMM yyyy
    dddd d MMMM yyyy HH:mm
    dddd d MMMM yyyy H:mm
    dddd d MMMM yyyy HH.mm
    dddd d MMMM yyyy HH' h 'mm
    d MMM yy HH:mm
    d MMM yy H:mm
    d MMM yy HH.mm
    d MMM yy HH' h 'mm
    d MMMM yyyy HH:mm
    d MMMM yyyy H:mm
    d MMMM yyyy HH.mm
    d MMMM yyyy HH' h 'mm
    dddd d MMMM yyyy HH:mm:ss
    dddd d MMMM yyyy H:mm:ss
    dddd d MMMM yyyy HH.mm
    dddd d MMMM yyyy HH' h 'mm
    d MMM yy HH:mm:ss
    d MMM yy H:mm:ss
    d MMM yy HH.mm
    d MMM yy HH' h 'mm
    d MMMM yyyy HH:mm:ss
    d MMMM yyyy H:mm:ss
    d MMMM yyyy HH.mm
    d MMMM yyyy HH' h 'mm
    dd/MM/yyyy HH:mm
    dd/MM/yyyy H:mm
    dd/MM/yyyy HH.mm
    dd/MM/yyyy HH' h 'mm
    dd/MM/yy HH:mm
    dd/MM/yy H:mm
    dd/MM/yy HH.mm
    dd/MM/yy HH' h 'mm
    dd.MM.yy HH:mm
    dd.MM.yy H:mm
    dd.MM.yy HH.mm
    dd.MM.yy HH' h 'mm
    dd-MM-yy HH:mm
    dd-MM-yy H:mm
    dd-MM-yy HH.mm
    dd-MM-yy HH' h 'mm
    yyyy-MM-dd HH:mm
    yyyy-MM-dd H:mm
    yyyy-MM-dd HH.mm
    yyyy-MM-dd HH' h 'mm
    dd/MM/yyyy HH:mm:ss
    dd/MM/yyyy H:mm:ss
    dd/MM/yyyy HH.mm
    dd/MM/yyyy HH' h 'mm
    dd/MM/yy HH:mm:ss
    dd/MM/yy H:mm:ss
    dd/MM/yy HH.mm
    dd/MM/yy HH' h 'mm
    dd.MM.yy HH:mm:ss
    dd.MM.yy H:mm:ss
    dd.MM.yy HH.mm
    dd.MM.yy HH' h 'mm
    dd-MM-yy HH:mm:ss
    dd-MM-yy H:mm:ss
    dd-MM-yy HH.mm
    dd-MM-yy HH' h 'mm
    yyyy-MM-dd HH:mm:ss
    yyyy-MM-dd H:mm:ss
    yyyy-MM-dd HH.mm
    yyyy-MM-dd HH' h 'mm
    d MMMM
    d MMMM
    yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
    yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
    ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
    ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
    yyyy'-'MM'-'dd'T'HH':'mm':'ss
    HH:mm
    H:mm
    HH.mm
    HH' h 'mm
    HH:mm:ss
    H:mm:ss
    HH.mm
    HH' h 'mm
    yyyy'-'MM'-'dd HH':'mm':'ss'Z'
    dddd d MMMM yyyy HH:mm:ss
    dddd d MMMM yyyy H:mm:ss
    dddd d MMMM yyyy HH.mm
    dddd d MMMM yyyy HH' h 'mm
    d MMM yy HH:mm:ss
    d MMM yy H:mm:ss
    d MMM yy HH.mm
    d MMM yy HH' h 'mm
    d MMMM yyyy HH:mm:ss
    d MMMM yyyy H:mm:ss
    d MMMM yyyy HH.mm
    d MMMM yyyy HH' h 'mm
    MMMM yyyy
    MMMM yyyy
    Du coup le format que je souhaite ne fait pas partie de ceux existants

    J'ai bien essayé de passer par une String via le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    String currentDateStr = DateTime.Now.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'");
    J'obtiens bien le format voulu. Par contre je n'arrive pas à trouve la bonne méthode pour transformer cette chaine en objet DateTime. J'ai tenté avec la méthode Parse mais le résultat n'est pas celui escompté.

    Je trouve cette façon un peu lourde et pas très optimale.

    Si vous avez une idée je suis preneur.
    Merci


    P.S. Je suis en version 3.5

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ce format de date s'appelle "universal sortable date and time". Son raccourcis est "u".

    Tu peux l'utiliser comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var dtFormat = new CultureInfo("fr-FR", false).DateTimeFormat;
    var pattern = dtFormat.UniversalSortableDateTimePattern;
     
    var currentDateStr = DateTime.Now.ToString(pattern);

    Ou bien comme ceci avec le raccourcis :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var currentDateStr = DateTime.Now.ToString("u");

    Pour info : Standard Date and Time Format Strings
    Et : DateTimeFormatInfo.UniversalSortableDateTimePattern Property
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    sinon quand tu es sur un format spécifique pour obtenir la date il faut utiliser date.parseexact qui permet de fournir le string et comment retrouver les infos dedans
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    merci à tous les deux pour vos réponses
    Mon problème est toujours le même
    Quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     var currentDateStr2 = DateTime.Now.ToString("u");
     Console.WriteLine("Current date time string bis: {0}", currentDateStr2);
     Console.WriteLine("Current date time  bis: {0}", DateTime.Parse(currentDateStr2));
    J'obtiens l'affichage :

    Current date time string bis: 2016-01-07 09:32:08Z
    Current date time bis: 01/07/2016 10:32:08
    Hormis que j'ai un décalage d'une heure le format de la seconde (mais bon c'est normal) l'affichage du format de la date sur la seconde ligne n'est pas correcte.
    J'ai l'impression qu'il y a une perte du format lors de la conversion lors du passage du string en datetime

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par noOneIsInnocent Voir le message
    J'ai l'impression qu'il y a une perte du format lors de la conversion lors du passage du string en datetime
    une variable date n'a pas de format, c'est une date enregistrée avec un format binaire dans 8 octets (ce qui lui permet de fonctionner sur tous les pc et dans toutes les bases de données de la même manière)
    sa représentation sous forme de string est à appliquer à chaque fois que tu veux une représentation autre que celle définie par défaut dans windows

    donc oui lors du passage de string à datetime il y a une perte du format, mais heureusement, sinon quand tu fais une appli utilisée dans plusieurs pays tu t'arraches les cheveux ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    OK merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formatage DateTime en Sql
    Par olibara dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 18/03/2011, 08h56
  2. Formatage d'un champ de type datetime
    Par elspliffo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/11/2007, 13h58
  3. [VB.Net] Formatage d'un champ DateTime d'un DataGrid
    Par Jerem76 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 29/07/2005, 09h44
  4. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  5. pb formatage document XML généré par un dom tree
    Par lionel69 dans le forum APIs
    Réponses: 11
    Dernier message: 17/10/2002, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo