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 :

comment assigner une date à un DateTime?


Sujet :

C#

  1. #1
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut comment assigner une date à un DateTime?
    Bonjour,

    j'ai 2 datetime qui doivent représenter une période...
    Cette période définie par une date début et une date de fin doit par exemple durer à partir de la date/heure du jour, jusqu'au lendemain à minuit.

    Le premier est tout simplement DateTime.Now, mais le second je ne vois pas comment l'assigner.

    j'aurais vu un truc de ce style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DateTime debaff = DateTime.Now;
    DateTime finaff = debaff.AddDays(1);
    finaff.Hour = 23;
    finaff.Minute = 59;
    finaff.Second = 59;
    mais il refuse de m'assigner l'heure, vu que c'est en lecture seule...

    Comment fait on?

    Merci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434

  3. #3
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    Voila comment tu peux le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                DateTime debaff = DateTime.Now;
                DateTime finaff = new DateTime(debaff.Year, debaff.Month, debaff.Day + 1, 23, 59, 59);
    Je crois que quelque part tu verifies si une date donnee est dans l'intervalle [deb,fin].
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                DateTime dt = ...;
                if (dt >= debaff && dt <= finaff)
                {
                   // ...
                }
    Je te propose de faire la meme chose mais d'une maniere un tout petit peu differente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                DateTime debaff = DateTime.Now;
                DateTime finaff = debaff.Date.AddDays(2);
    
                DateTime dt = DateTime.MaxValue;
                if (dt >= debaff && dt < finaff)
                {
    
                }
    J'espere que cela va t'aider et que ma supposition est bonne

  4. #4
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    merci scifire pour ton message...

    ta façon de faire me convient pour certains cas.

    Mais si jamais je voulais modifier une valeur d'un des attributs du datetime en dehors de sa création, comment pourrait on faire?

    Peut-être est ce cela que postait morpheus, mais je n'ai pas bien saisi le rapport avec le datetime.Parse (string --> datetime) et mon problème

  5. #5
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    L'idee de Thomas c'etait que tu peux creer n'importe quelle date en utilisant la methode Parse() (elle jete une exception) de DateTime.
    Je te suggere quand meme de s'orienter vers la methode TryParse() (pas d'exception un simple boolean) qui est plus rapide je crois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                DateTime dt;
                if (DateTime.TryParse("2005/12/05T22:23:47", out dt))
                {
                    // OK
                }
                else
                {
                    // La date n'est pas valide.
                }
    Moi personnellement j'utilise ce format (si ma memoire est bonne c'etait une norme ISO) mais la methode (Try)Parse() est tres flexible. Voila quelques exemples.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                DateTime.TryParse("2005/12/05 22:23:47", out dt)
                DateTime.TryParse("2005/12/05", out dt)
                DateTime.TryParse("2005.12.05", out dt)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par cortex024
    Mais si jamais je voulais modifier une valeur d'un des attributs du datetime en dehors de sa création, comment pourrait on faire?
    Et bien.. On ne peut pas!
    Datetime est immuable tu ne peux donc jamais changer la valeur d'une instance de datetime. C'est comme les strings en fait.


    Si tu veux changer une valeur tu doit créer une nouvelle date et l'assigner a ta variable.
    Soit tu fait ca en utilisant un des constructeurs de datetime soit tu utilise une des méthodes Add... de datetime qui permet de renvoyer une date dont la valeur est l'ancienne date + la modification apportée par la méthode Add...

  7. #7
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    Citation Envoyé par Monkeyget
    Et bien.. On ne peut pas!
    Je n'aime déjà pas travailler avec des datetimle car ca crée toujours pleins de problèmes, mais en plus c'est mal foutu si ce que tu dis est vrai

    Citation Envoyé par Monkeyget
    Datetime est immuable tu ne peux donc jamais changer la valeur d'une instance de datetime. C'est comme les strings en fait.
    Perso je change perpetuellement la valeur de mes strings

    Citation Envoyé par Monkeyget
    Si tu veux changer une valeur tu doit créer une nouvelle date et l'assigner a ta variable.
    Soit tu fait ca en utilisant un des constructeurs de datetime soit tu utilise une des méthodes Add... de datetime qui permet de renvoyer une date dont la valeur est l'ancienne date + la modification apportée par la méthode Add...
    oui mais la méthode Add ne permet pas tout

  8. #8
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    La methode Add accepte des valeurs negatives comme parametres.

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

Discussions similaires

  1. Comment coder une date NULL dans un champ datetime ?
    Par tonton67 dans le forum Développement
    Réponses: 3
    Dernier message: 11/11/2008, 11h54
  2. [MySQL] comment rechercher une date au format datetime avec une date au format date
    Par Menoly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2007, 10h14
  3. Comment fixer une date dans un champ !
    Par LATHIOS dans le forum Access
    Réponses: 8
    Dernier message: 17/06/2005, 19h44
  4. Comment récuperer une date depuis une chaine?
    Par shopoto dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 16h17

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