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

VB.NET Discussion :

Problème de date.


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut Problème de date.
    Bonjour à tous.
    Je suis actuellement en stage, et j'ai un petit souci. Mon idée serait de parcourir le mois en cours de l'année en cours afin de déterminer si chacun des jours de ce mois est soit un samedi, soit un dimanche, soit un jour férié.
    J'ai déjà essayé pas mal de choses mais sans succès. Mon plus gros problème est en fait de parcourir le mois car dans une boucle FOR, il n'y a aucune possibilité de mettre une date. Voila, je vous remercie d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour les jours fériés c'est différent selon les pays, il n'y a pas moyen de les connaitre de façon générique. La seule solution est donc d'avoir une liste des jours fériés.

    Pour le reste, quel est le problème exactement ?
    Tu sais :
    - quelle est l'année en cours (DateTime.Today.Year)
    - quel est le mois en cours (DateTime.Today.Month)
    - combien il y a de jours dans un mois donné (méthode DateTime.DaysInMonth)
    - quel est le jour de la semaine pour une date donnée (propriété DayOfWeek)

    Il suffit donc de boucler sur les jours du mois, de créer un objet DateTime pour chaque jour, et de tester le jour de la semaine pour cette date. Ca donne un truc dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim today As DateTime = DateTime.Today
    Dim nbJours = DateTime.DaysInMonth(today.Year, today.Month)
    For j As Integer = 1 To nbJours
        Dim jour As New DateTime(today.Year, today.Month, j)
        If jour.DayOfWeek = DayOfWeek.Saturday Then
            ' faire quelque chose si c'est un samedi
        ElseIf jour.DayOfWeek = DayOfWeek.Sunday Then
            ' faire quelque chose si c'est un dimanche
        Else
            ' faire quelque chose si c'est un autre jour
        End If
    Next

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut
    Merci beaucoup c'est exactement ça qui me fallait, je te remercie infiniment, il me reste plus qu'à régler le problème des jours fériés.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Pour les jours fériés, le plus simple serait de les avoir dans un fichier ou une base de données et de les charger dans une List(Of DateTime). Ensuite, pour savoir si une date donnée est un jour férié, il suffit de vérifier si elle est dans cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim listJoursFeries As List(Of DateTime) = ChargerListeJoursFeries()
    ...
     
    If listJoursFeries.Contains(jour) Then
        ' faire quelque chose si c'est un jour férié
        ' ...
    End If

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bonjour,

    Si ta problématique des jours fériés ne concerne que la France, il y a pas mal de gens avant nous qui se sont penchés sur des formules savantes.

    En résumé, les jours fériés sont de deux catégories :
    1) Les jours fixes (premier mai, 25 décembre...). Là, pas de problème....
    2) Les jours variables (lundi de pacques, jeudi de l'ascension...)
    Dans ce cas, c'est le calendrier lunaire qui permet de déterminer la première journée variable (qui est le lundi de pacques). Les autres journées variables sont générés à partir de pacques en ajoutant un nombre précis de jours/semaines.
    Tu trouveras les règles précises avec l'ami

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 42
    Par défaut
    Pour les jours fériés, c'est bon pour moi, peut-être me suis-je compliqué la vie mais au mois j'ai réussi, il faut maintenant effectivement que je me penche sur les jours fériés mobiles. Cela risque d'être un peu compliqué.
    Je vous met mon code dans le cas où ça en intéresserait certains.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     Dim nbJours As Integer
            nbJours = Date.DaysInMonth(Date.Now.Year, Date.Now.Month)
            Dim nbJoursTravailles As Integer
            nbJoursTravailles = 0
            For x As Integer = 1 To nbJours
                Dim jour As New DateTime(Date.Now.Year, Date.Now.Month, x)
                If jour.DayOfWeek = DayOfWeek.Saturday Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.DayOfWeek = DayOfWeek.Sunday Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 1 And jour.Month = 1 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 1 And jour.Month = 5 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 8 And jour.Month = 5 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 14 And jour.Month = 7 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 15 And jour.Month = 8 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 1 And jour.Month = 11 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 11 And jour.Month = 11 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 25 And jour.Month = 12 Then
                    nbJoursTravailles = nbJoursTravailles
                ElseIf jour.Day = 26 And jour.Month = 12 Then
                    nbJoursTravailles = nbJoursTravailles
                Else
                    nbJoursTravailles = nbJoursTravailles + 1
                End If
            Next
            MsgBox(nbJoursTravailles)
    (Je suis Alsacienne, c'est pour cela que le 26 décembre est inclus dans les jours fériés).
    Merci encore pour tout.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par many6801 Voir le message
    (Je suis Alsacienne, c'est pour cela que le 26 décembre est inclus dans les jours fériés).
    Le 26 décembre est férié en Alsace ? Eh, c'est pas juste
    Je vais déménager

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

Discussions similaires

  1. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  2. problème de date
    Par baboune dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 10/06/2004, 10h52
  3. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21
  4. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

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