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 :

Format de DateTime.


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 43
    Points
    43
    Par défaut Format de DateTime.
    Bonjour à tous,

    Voila déjà un moment que je rencontre un problème :

    Je déclare un objet DateTime en lui attribuant la valeur d'un élément date lu dans un base de donnée.
    Mon élément date a ce format : dd/MM/yyyy.
    Mais lorsque je récupère la date dans mon objet DateTime j'obtiens ce format :
    dd/MM/yyyy hh:mm:ss.

    Mon problème est que je veut récupérer que dd/MM/yyyy et pas l'heure.
    Je sais qu'il existe des méthode pour cela mais en passant par un string comme
    DateTime.ToShortDateTime().

    J'aimerais garder mon objet DateTime avec le format dd/MM/yyyy car j'en est besoin pour faire des test par la suite.

    J'espère que l'on pourra trouver une solution à mon problème.

    Cordialement,
    Hiken.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    PS :
    Je sais aussi qu'il existe la méthode :

    DateTime.TryParseExact(
    string contenant la date ex("12/10/2009"),
    le format ex ("dd/MM/yyyy") ,
    la cultureInfo CultureInfo.InvariantCulture ,
    DateTimeStyles.None,
    out NewDateTime (Mon nouveau DateTime censé être sans heure );

    Dans ce cas je n'arrive pas convertir mon string contenant "12/10/2009" en datetime du même format, j'obtiens toujours cela "12/10/2009 00:00:00"

    Merci d'avance

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    J'avais chercher une solution pour ca mais à ce que j'ai vu, quand tu utilises le type DateTime, tu stockes une date avec l'heure. Pour récupérer la composante date, il faut utiliser la propriété Date de DateTime mais on récupère encore un objet de type DateTime(sauf que l'heure est mise à zero).
    Par contre comme tu l'as dis, tu peux récupérer la date seulement sous forme de String courte à l'aide de la méthode ToShortDateString de DateTime.

    C'est vrai qu'il existe une facon de représenter une heure à l'aide du type TimeSpan mais pour seulement une date, je ne vois pas.

  4. #4
    Membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Je ne suis pas sûr d'avoir bien compris ton problème mais tu peux utiliser la méthode tostring du DateTime:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.Now.ToString("dd/MM/yyyy");
    Avec ceci tu vas récupérer juste la date avec le format que tu souhaites.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    @Miko95 : Effectivement c'est un problème qui traine dans mon appli depuis un petit bout de temps et qui m'empêche de faire mes test.

    Je te remercie pour ta réponse j'espère que quelqu'un connait la solution à ce problème.

    @luunaz : Merci pour ta réponse, mais justement mon problème est que je ne veut pas passer par un string mais garder mon objet DateTime juste avec la date sans l'heure.

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2003
    Messages : 108
    Points : 129
    Points
    129
    Par défaut
    tu ne peux pas avoir l'objet DateTime sans l'heure ou sans la date, c'est un objet DateTime et pas un objet Date ou Time.

    si tu veux travailler avec seulement la date tu va devoir utliser des String du genre ToShortDateString() ou ToString() comme dit précédemment

    et c'est pour quoi faire au juste? peut être qu'il y a une autre solution

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Mais justement je ne crois pas qu'il existe un type .NET ou l'on peut stocker seulement une date. Ce que je ne comprends pas est pourquoi tu voudrais stocker que la date, meme si tu n'as besoin que de la date, avoir d'autre infos(comme l'heure) ne devrait pas te déranger, je pense?

  8. #8
    Membre du Club
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 59
    Points : 50
    Points
    50
    Par défaut
    Si tu ne veux pas passé par une String alors créé toi ton propre Objet Date car comme dit précédemment tu peux pas casser l'objet DateTime pour ne plus avoir que la date sans l'heure.

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Merci pour toute vos réponse.

    Donc maintenant j'ai la confirmation que DateTime ne peut contenir que la Date.

    Pour répondre à la question, pourquoi j'ai besoin que de la date :
    Car dans la suite de mon appli, par exemple je suis amené à faire des requêtes (Delete, Update) qui nécessites la comparaison de date entre elle (Clause Where).
    Le problème est que dans ma table les date sont au format dd/mm/yyyy, et que l'objet DateTime me mettra toujours dd/mm/yyyy hh:mm:ss.
    Donc lors de la comparaison il ne trouve pas la date a cause de l'heure.

    Dans le cas de l'utilisation d'un string, si je compare avec un string contenant juste l'heure récupéré dans l'objet DateTime (avec ToShortDateTime).
    J'ai une erreur : donnée incompatible dans l'expression du critère de recherche, étant donnée que je ne peut apparemment pas comparer un string avec une date.

    Voila vous savez tout de mes probléme

    Si quelqu'un a une idée...

  10. #10
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Le type DateTime a une propriété "Date", qui renvoie un DateTime dont la partie heure est égale à 0.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Datetime dt = DateTime.Now; // 2009-10-12 15:24:21
    DateTime dateSeule = dt.Date; // 2009-10-12 00:00:00
    ಠ_ಠ

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2007
    Messages : 257
    Points : 74
    Points
    74
    Par défaut
    Ok donc les comparaisons se font dans la clause WHERE de ta requete.
    Peux tu poster un exemple de requete que tu veux faire?(requete avec la comparaison biensur).

    J'ai pris une requete en exemple sur internet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM Bird WHERE birth > '1998-1-1'
    La date doit se trouver sous forme de chaine en fait entre apostrophes.
    Dans ton cas, tu peux utiliser la chaine renvoyée par ToShortDate je pense.

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Alors un grand merci à tous,

    Donc c'est bon j'ai résolu mon probléme :

    • Dans un premier temps je me suis servi de ce que vous m'avez dit, pour récupérer ma date j'ai utilisé le Datime.Date qui ma permit de mettre l'heure à 0.
    • Ensuite il y avait une jolie notion, bien vicieuse, qui ma était indispensable pour faire mes tests :
      Dans ma BDD les dates étaient automatiquement convertit sous ce format : "mm/dd/yyyy" donc lorsque je lui donnais à comparer une date au format fr "dd/mm/yyyy", évidement il ne trouvait rien.
      De plus il ma fallut ajouter le caractére de contrôle #, pour que la date soit bien interprété dans ma BDD.


    En tout cas je tiens à vous remercier pour votre aide.
    A Bientot sur Developper.net

    Hiken.

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

Discussions similaires

  1. Format représentation datetime sql serveur 2008 ou 2005
    Par arthuro45 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 10/06/2010, 15h17
  2. [1.x] formater un datetime américain en européen
    Par blasil64 dans le forum Symfony
    Réponses: 5
    Dernier message: 23/01/2010, 15h49
  3. Formater une DATETIME
    Par slideveloppeur2006 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/04/2008, 17h10
  4. Format Objet DateTime
    Par rafiq25 dans le forum C#
    Réponses: 3
    Dernier message: 11/05/2007, 17h31
  5. [VB.NET] définir format colonne datetime d'un datatable
    Par HULK dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/12/2005, 17h58

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