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
» PANORAMIC V 1
Manipulation de dates Emptypar papydall Aujourd'hui à 3:22

» select intégrés [résolu]
Manipulation de dates Emptypar jjn4 Hier à 17:00

» number_mouse_up
Manipulation de dates Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
Manipulation de dates Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
Manipulation de dates Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
Manipulation de dates Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
Manipulation de dates Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Manipulation de dates Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Manipulation de dates Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Manipulation de dates Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Manipulation de dates Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Manipulation de dates Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Manipulation de dates Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Manipulation de dates Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Manipulation de dates Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

 

 Manipulation de dates

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12294
Age : 74
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 : 12294
Age : 74
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
-
» Manipulation de polygones
» Dates d'essaie
» Suite de programmes de manipulation d'images
» tableaux de variables et la manipulation de leurs données
» Ecart en jours entre 2 dates

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: