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

Delphi Discussion :

Encoder une date à partir de la semaine et année


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 1
    Par défaut Encoder une date à partir de la semaine et année
    Bonjour,

    Je souhaiterais savoir si il existe une fonction me permettant de reconstruire une date à partir de la semaine + année.

    Je stocke dans une table de statistiques des données par semaine et par année. Afin de réaliser des graphiques (avec Fastreport) en ayant toujours le même axe, il serait plus facile de réencoder ma semaine et mon année en date complète.

    Année Début : 2019
    Semaine Début : 27
    --> 01/07/2019

    Année Fin : 2020
    Semaine Fin : 38
    --> 14/09/2020

    Merci pour votre aide
    Solenn

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 539
    Billets dans le blog
    10
    Par défaut
    Une solution possible. Uses DateUtils
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      Date1 : TDateTime;
      NumSem : Word;
      Annee : Word ;
    begin
      Annee := 2020 ;
      NumSem := 27 ;
      Date1 := StrToDate ('01/01/'+Annee.ToString) ;
      while WeekOfTheYear(Date1)<NumSem do
         Date1 := Date1 + 1 ;
      showMessage (DateToStr(Date1)) ;

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Ou encore plus simple, également dans DateUtils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EncodeDateWeek(2020,38)
    Il existe un troisième paramètre qui accepte un entier de 1 à 7 (lundi à dimanche), et qui par défaut est à 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Writeln(DateToStr(EncodeDateWeek(2020,38, 1)));
    Writeln(DateToStr(EncodeDateWeek(2020,38, 7)));
    Renvoie :
    14/09/2020
    20/09/2020

  4. #4
    Membre émérite Avatar de sergio_is_back
    Homme Profil pro
    Consultant informatique industrielle, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique industrielle, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 187
    Par défaut
    Citation Envoyé par popo Voir le message
    Ou encore plus simple, également dans DateUtils.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EncodeDateWeek(2020,38)
    Il existe un troisième paramètre qui accepte un entier de 1 à 7 (lundi à dimanche), et qui par défaut est à 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Writeln(DateToStr(EncodeDateWeek(2020,38, 1)));
    Writeln(DateToStr(EncodeDateWeek(2020,38, 7)));
    Renvoie :
    14/09/2020
    20/09/2020
    Oui, DateUtils est un vrai couteau Suisse pour la gestion du temps... Trop souvent oublié (souvent par manque de connaissance), j'ai vu des algos pas possibles pour calculer un écart entre deux dates, ou le numéro de semaine d'une date, ou le quantième de la date alors qu'avec DateUtils toutes les fonctions sont déjà prévues...

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    attention a vérifier mais je crois que les numéro de semaine américaine ne sont pas les même qu'en france.
    dans mon souvenir le numero de semaine americaine ne commence que si il y a au moins 4 jours ouvrés


    mes 2 cents ....

  6. #6
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    Citation Envoyé par anapurna Voir le message
    salut

    attention a vérifier mais je crois que les numéro de semaine américaine ne sont pas les même qu'en france.
    dans mon souvenir le numero de semaine americaine ne commence que si il y a au moins 4 jours ouvrés


    mes 2 cents ....
    Du coup, je suis allé vérifier...
    Et j'ai trouvé une règle différente :
    Pas la même règle entre les US et l'Europe
    Lorsqu'une année commence un vendredi, un samedi ou un dimanche, ceci n'est pas considéré comme une semaine. Mais pour l'Amérique du Nord, cette règle n'existe pas et le calcul des numéros de semaine commence dès le 1er Janvier, même si le 1er Janvier est un dimanche
    Et puisqu'il y a des normes de partout, je suis également allé vérifier s'il y en avait une.
    Je n'ai pas pu trouver de site officiel alors je me raccrocherai à ce que dit Wikipédia (malgré ce que j'en pense).
    Et il semblerai que ce soit la même que chez nous.

Discussions similaires

  1. [2008R2] Récupérer une date à partir d'un numéro de semaine et d'une année.
    Par ff.martin dans le forum Développement
    Réponses: 5
    Dernier message: 24/07/2014, 15h20
  2. [XL-2003] Récupérer une date à partir du numéro de semaine
    Par tarnx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2011, 00h32
  3. Réponses: 9
    Dernier message: 21/07/2010, 08h43
  4. Recherche d'une date à partir du numéro de la semaine
    Par FMDCC dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/01/2010, 17h22
  5. [VB.Net] Obtenir une date à partir d'un numero de semaine
    Par tonysky dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/01/2007, 08h57

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