ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

D'une date en littéral à une date au format date : CTOD2()   



L'auteur

Black Sabbath
France France
Membre Simple
# 0000000106
enregistré le 03/11/2004

http://omiro.free.fr
64 ans
MIRO Olivier
de la société Institut National du Cancer
Fiche personnelle


Note des membres
18/20
1 vote


Contributions > 01 - PRG : Programmation > Conversions

D'une date en littéral à une date au format date : CTOD2()
# 0000000198
ajouté le 26/05/2005 09:32:48 et modifié le 26/05/2005
consulté 8480 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0
VFP 5.0
VFP 3.0
FPW 2.6

Description
version améliorée de CTOD pour accepter la conversion de "Vendredi 7 Janvier 2005"
Code source :
LPARAMETERS cDate     && "Vendredi 7 Janvier 2005"

LOCAL iT1, iT2, cAnnee, cMois, dDate
cDate = ALLTRIM(cDate)
dDate = CTOD(cDate)  && si on passe "7/1/2005"
IF EMPTY(dDate)
  dDate = CTOD(SUBSTR(cDate,AT(" ",cDate)))
  IF EMPTY(dDate)
    iT1 = RAT(" ",cDate)
    cAnnee = SUBSTR(cDate,iT1+1)
    iT2 = RAT(" ",cDate,2)
    cMois = SUBSTR(cDate,iT2+1,iT1-iT2-1)
    cmois = LOWER(cMois)
    DO CASE
      CASE cMois = "janvier"
        cMois = "/01/"
      CASE cMois = "fevrier" OR cMois = "février"
        cMois = "/02/"
      CASE cMois = "mars"
        cMois = "/03/"
      CASE cMois = "avril"
        cMois = "/04/"
      CASE cMois = "mai"
        cMois = "/05/"
      CASE cMois = "juin"
        cMois = "/06/"
      CASE cMois = "juillet"
        cMois = "/07/"
      CASE cMois = "aout" OR cMois = "août"
        cMois = "/08/"
      CASE cmois = "septembre"
        cMois = "/09/"
      CASE cmois = "octobre"
        cMois = "/10/"
      CASE cmois = "novembre"
        cMois = "/11/"
      CASE cmois = "décembre" OR cMois = "decembre"
        cMois = "/12/"
      OTHERWISE
        RETURN {  /  /  }  &&.F.
    ENDCASE

    iT1 = RAT(" ",cDate,3)
    cJour = SUBSTR(cDate,iT1+1,iT2-iT1-1)
    cJour = PADL(cJour,2,"0")
    cDate = "{^"+cAnnee+cMois+cJour+"}"
    dDate = &cDate
  ENDIF
ENDIF
RETURN dDate


Commentaires
le 26/05/2005, Mike Gagnon a écrit :
M. Sabath
ÉTant sur un système americain et anglais je ne connais pas le résultat sur un ordi Européen, mais la fonction suivante me donne le mem résultat que ta fonction.
Dépendant bien sur du setting de Date sur Windows.
SET DATE LONG
?CDOW(DATE())+" "+TRANSFORM(DATE())

Obtenez-vous le meme résultat?

le 26/05/2005, Black Sabbath a écrit :
Mike,
En effet, CDOW(DATE())+" "+TRANSFORM(DATE()) doit donner quelque chose comme Jeudi 26 juin 2005...
mais CTOD2() fait exactement l'inverse : Caractères TO Date...
Tu lui passe une variable caractère décrivant une date, CTOD2() renvoie une date au format date (donc dépendant de TES param de date)

le 27/05/2005, Mike Gagnon a écrit :
La réponse est la meme mais le format est différent. Ok.



Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3