FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Manipulation de dates Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Manipulation de dates Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Manipulation de dates Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Manipulation de dates Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Manipulation de dates Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Manipulation de dates Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Manipulation de dates Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Manipulation de dates Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Manipulation de dates Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Manipulation de dates Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Manipulation de dates Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Manipulation de dates Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Manipulation de dates Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Manipulation de dates Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Manipulation de dates Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Manipulation de dates

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Manipulation de dates Empty
MessageSujet: Manipulation de dates   Manipulation de dates EmptyJeu 11 Fév 2010 - 11:04

Je me suis fait un petit utilitaire pour manipuler des dates en format jj/mm/aaaa, selon le modèle de la fonction dateadd de Visual Basic. Je mets le source à disposition; toute la documentation est dans le source.

La routine gère correctement les années bisextiles.

C'est un exemple de ce j'aimerais utiliser avec les INCLUDE lorsqu'il seront opérationnels. En occurence, il s'agit ici de deux parties distinctes: la déclaration des variables utilisées par le module, à inclure au début du programme avec les déclarations habituelles, et la partie code à ajouter à la fin du source du programme dans lequel on souhaite utiliser cette fonction.

A suivre: une fonction pour déterminer le jourde la semaine de n'importe quelle date.

Code:

rem ****************************************************************
rem *                                                              *
rem *      dateadd - simulation de la fonction dateadd de VB      *
rem *                                                              *
rem *    Cette routine a 3 points d'entrée:                        *
rem *          dateadd_jj    additionner des jours à une date    *
rem *          dateadd_mm    additionner des mois à une date    *
rem *          dateadd_aaaa  additionner des années à une date  *
rem *                                                              *
rem *    En entrée, 2 variables sont à charger:                    *
rem *          dateadd_date$  la date à modifier (en "jj/mm/aaa") *
rem *          dateadd_delta% la fraction à ajouter ou à retirer  *
rem *              data_add_delta%<0:  retirer                    *
rem *              data_add_delta%>0:  ajouter                    *
rem *                                                              *
rem *    En sortie, 1 variable est à consulter:                    *
rem *          dateadd_date$  la date résultante                  *
rem *                                                              *
rem *    Installation:                                            *
rem *          copier simplement ce module dans le source, en    *
rem *          plaçant les déclarations au début et la            *
rem *          partie code à la fin du source                    *
rem *                                                              *
rem ****************************************************************

label dateadd_jj, dateadd_mm, dateadd_aaaa
label dateadd_eclate, dateadd_fusionne, dateadd_fin_de_mois
label dateadd_fevrier
dim dateadd_date$, dateadd_delta%
dim dateadd_jj%, dateadd_mm%, dateadd_aaaa%, dateadd_jours%(12)



rem ****************************************************************
rem *                                                              *
rem *    partie à coller à la fin du source                      *
rem *                                                              *
rem ****************************************************************

dateadd_eclate:
    dateadd_jj% = val(left$(dateadd_date$,2))
    dateadd_mm% = val(mid$(dateadd_date$,4,2))
    dateadd_aaaa% = val(right$(dateadd_date$,4))
    return
   
dateadd_fusionne:
    dateadd_date$ = str$(dateadd_mm%) + "/" + str$(dateadd_aaaa%)
    if dateadd_mm%<10 then dateadd_date$ = "0" + dateadd_date$
    dateadd_date$ = str$(dateadd_jj%) + "/" + dateadd_date$
    if dateadd_jj%<10 then dateadd_date$ = "0" + dateadd_date$
    return

dateadd_fin_de_mois:
    dateadd_jours%(1)=31
    dateadd_jours%(2)=28
    dateadd_jours%(3)=31
    dateadd_jours%(4)=30
    dateadd_jours%(5)=31
    dateadd_jours%(6)=30
    dateadd_jours%(7)=31
    dateadd_jours%(8)=31
    dateadd_jours%(9)=30
    dateadd_jours%(10)=31
    dateadd_jours%(11)=30
    dateadd_jours%(12)=31
    return

    dateadd_fevrier:
    if dateadd_mm%=2
        if dateadd_aaaa%=int(dateadd_aaaa%/4)*4 then dateadd_jours%(2) = 29
    end_if
    return
   
 dateadd_aaaa:
    gosub dateadd_eclate
    dateadd_aaaa% = dateadd_aaaa% + dateadd_delta%
    gosub dateadd_fusionne
    return
   
 dateadd_mm:
    gosub dateadd_eclate
    gosub dateadd_fin_de_mois
    dateadd_mm% = dateadd_mm% + dateadd_delta%
    if dateadd_mm%<1
        while dateadd_mm%<1
            dateadd_aaaa% = dateadd_aaaa% - 1
            dateadd_mm% = dateadd_mm% + 12
        end_while
    else
        while dateadd_mm%>12
            dateadd_aaaa% = dateadd_aaaa% + 1
            dateadd_mm% = dateadd_mm% - 12
        end_while
    end_if
    if dateadd_jj%>dateadd_jours%(dateadd_mm%) then dateadd_jj% = dateadd_jours%(dateadd_mm%)
    gosub dateadd_fusionne
    return
   
 dateadd_jj:
    gosub dateadd_eclate
    gosub dateadd_fin_de_mois
    dateadd_jj% = dateadd_jj% + dateadd_delta%
    if dateadd_jj%<1
        while dateadd_jj%<1
            dateadd_mm% = dateadd_mm% - 1
            if dateadd_mm%<1
                dateadd_mm% = 12
                dateadd_aaaa% = dateadd_aaaa% - 1
            end_if
            gosub dateadd_fevrier
            dateadd_jj% = dateadd_jj% + dateadd_jours%(dateadd_mm%)
        end_while
    else
        while dateadd_jj%>dateadd_jours%(dateadd_mm%)
            gosub dateadd_fevrier
            dateadd_jj% = dateadd_jj% - dateadd_jours%(dateadd_mm%)
            dateadd_mm% = dateadd_mm% + 1
            if dateadd_mm%>12
                dateadd_mm% = 1
                dateadd_aaaa% = dateadd_aaaa% + 1
            end_if
        end_while
    end_if
    gosub dateadd_fusionne
    return
 
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Tengaal

Tengaal


Nombre de messages : 13
Age : 50
Localisation : France
Date d'inscription : 12/01/2010

Manipulation de dates Empty
MessageSujet: Re: Manipulation de dates   Manipulation de dates EmptyJeu 11 Fév 2010 - 15:57

je viens justement de mettre un code pour trouver le jour de la semaine qui correspond à une date donnée, c'est par là :
https://panoramic.1fr1.net/vos-sources-vos-utilitaires-a-partager-f2/la-date-ok-mais-c-est-quel-jour-de-la-semaine-t559.htm
Wink
Revenir en haut Aller en bas
http://www.tengaal.com
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Manipulation de dates Empty
MessageSujet: Re: Manipulation de dates   Manipulation de dates EmptyJeu 11 Fév 2010 - 17:43

Voici ma version d'un programme déterminant le jour de la semaine à partir d'une date en format jj/mm/aaa, telle que je l'avais annoncée dans mon premier poste pour la manipulation des dates.

J'ai choisi un autre mécanisme que Tengaal, mais je pense arriver au même résultat: 0=dimanche, 1=lundi, ..., 6=samedi. Pour les inconditionnels des numéros des jours de 1=lundi, ..., 7=dimanche, la transformation est évidente...

Tout comme mon programme de manipulation des dates, le présent module est conçu pour être intégré sans conflit dans un programme existant (d'où le choix des noms des variables internes et des labels).

Code:

rem **********************************************************************
rem *                                                                    *
rem *    Calcul du jour de ls semaine                                    *
rem *                                                                    *
rem *    Cette routnie calcule le jour de la semaine à partir d'une      *
rem *    date en format jj/mm/aaaa.                                      *
rem *                                                                    *
rem *    Appel:                                                          *
rem *        gosub jour_de_semaine                                      *
rem *                                                                    *
rem *    Paramètre en entrée:                                            *
rem *        jour_de_semaine_date$                                      *
rem *                                                                    *
rem *    Paramètres en sortie:                                          *
rem *        jour_de_semaine_numero%                                    *
rem *        jour_de_semaine_text$                                      *
rem *                                                                    *
rem *    Installation:                                                  *
rem *        Copier les déclarations au début du programme, et le code  *
rem *        à la fin du programme dans lequel on veut l'utiliser        *
rem *                                                                    *
rem *    Utilisation:                                                    *
rem *      jour_de_semaine_date$ = "16/05/2010"                          *
rem *      gosub jour_de_semaine                                        *
rem *      message str$(jour_de_semaine_numero%) + " = " + jour_de_semaine_text$
rem *                                                                    *
rem **********************************************************************

label jour_de_semaine
dim jour_de_semaine_date$, jour_de_semaine_numero%, jour_de_semaine_text$
dim jour_de_semaine_j%, jour_de_semaine_m%, jour_de_semaine_a%
dim jour_de_semaine_m1%, jour_de_semaine_a1%, jour_de_semaine_ns%
dim jour_de_semaine_as%, jour_de_semaine_f%

rem **********************************************************************
rem *                                                                    *
rem $    Début de la partie "code" à copier à la fin du source          *
rem *                                                                    *
rem **********************************************************************

jour_de_semaine:
    jour_de_semaine_j% = val(left$(jour_de_semaine_date$,2))
    jour_de_semaine_m% = val(mid$(jour_de_semaine_date$,4,2))
    jour_de_semaine_a% = val(right$(jour_de_semaine_date$,4))
   
    if jour_de_semaine_m%<3
        jour_de_semaine_m1% = jour_de_semaine_m% + 10
        jour_de_semaine_a1% = jour_de_semaine_a% - 1
    else
        jour_de_semaine_m1% = jour_de_semaine_m% - 2
        jour_de_semaine_a1% = jour_de_semaine_a%
    end_if
   
    jour_de_semaine_ns% = int(jour_de_semaine_a1%/100)
   
    jour_de_semaine_as% = jour_de_semaine_a1% - jour_de_semaine_ns%*100
   
    jour_de_semaine_f% = jour_de_semaine_j% + jour_de_semaine_as% + int(jour_de_semaine_as%/4) - 2* jour_de_semaine_ns% + int(jour_de_semaine_ns%/4) + int((26*jour_de_semaine_m1%-2)/10)
   
    jour_de_semaine_numero% = jour_de_semaine_f% - int(jour_de_semaine_f%/7)*7
   
    select jour_de_semaine_numero%
        case 0: jour_de_semaine_text$ = "Dimanche"
        case 1: jour_de_semaine_text$ = "Lundi"
        case 2: jour_de_semaine_text$ = "Mardi"
        case 3: jour_de_semaine_text$ = "Mercredi"
        case 4: jour_de_semaine_text$ = "Jeudi"
        case 5: jour_de_semaine_text$ = "Vendredi"
        case 6: jour_de_semaine_text$ = "Samedi"
    end_select
   
return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Manipulation de dates Empty
MessageSujet: Re: Manipulation de dates   Manipulation de dates Empty

Revenir en haut Aller en bas
 
Manipulation de dates
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Dates d'essaie
» Manipulation de la gestion des évènements
» Suite de programmes de manipulation d'images
» Ecart en jours entre 2 dates
» tableaux de variables et la manipulation de leurs données

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: