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

Windows Discussion :

Récupèrer la date de la veille au format US


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut Récupèrer la date de la veille au format US
    Bonjour à tous,

    Je sais que cette question à été posée plusieurs fois, j'ai fait mes recherches et j'ai vu pas mal de résultats. Mais ne maîtrisant pas trop le batch dos, j'aimerai savoir comment je peux récupérer dans une variable, la date de la veille mais ne format US !

    C'est à dire mm/dd/yyyy .

    j'ai déjà quelques fonctions sous la main mais je n'arrive pas à leur faire cracher le bon format de date :

    date_hier = DateAdd("d", -1, Date)

    for /F "tokens=2,3,4 delims=/ " %%d in ('date /T') do (
    set jour=%%d%%e%%f
    )

    Merci d'avance pour le service que vous me rendez !!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Pour ceux que ça intéresse, j'ai trouvé la solution et pour tous les cas possibles et envisageables !!


    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    :: Keep variables local
    SETLOCAL
    
    :: Export registry's date format settings to a temporary file
    START /W REGEDIT /E %TEMP%.\_TEMP.REG "HKEY_CURRENT_USER\Control Panel\International"
    
    :: Read the exported data
    FOR /F "tokens=1* delims==" %%A IN ('TYPE %TEMP%.\_TEMP.REG ^| FIND /I "iDate"') DO SET iDate=%%B
    FOR /F "tokens=1* delims==" %%A IN ('TYPE %TEMP%.\_TEMP.REG ^| FIND /I "sDate"') DO SET sDate=%%B
    DEL %TEMP%.\_TEMP.REG
    
    :: Remove quotes from exported values
    SET iDate=%iDate:"=%
    SET sDate=%sDate:"=%
    
    :: Parse today's date depending on registry's local date format settings
    IF %iDate%==0 FOR /F "TOKENS=1-4* DELIMS=%sDate%" %%A IN ('DATE/T') DO (
    	SET LocalFormat=MM%sDate%DD%sDate%YYYY
    	SET YesterLocal=%%YesterM%%%sDate%%%YesterD%%%sDate%%%YesterY%%
    	SET Year=%%C
    	SET Month=%%A
    	SET Day=%%B
    )
    IF %iDate%==1 FOR /F "TOKENS=1-4* DELIMS=%sDate%" %%A IN ('DATE/T') DO (
    	SET LocalFormat=DD%sDate%MM%sDate%YYYY
    	SET YesterLocal=%%YesterD%%%sDate%%%YesterM%%%sDate%%%YesterY%%
    	SET Year=%%C
    	SET Month=%%B
    	SET Day=%%A
    )
    IF %iDate%==2 FOR /F "TOKENS=1-4* DELIMS=%sDate%" %%A IN ('DATE/T') DO (
    	SET LocalFormat=YYYY%sDate%MM%sDate%DD
    	SET YesterLocal=%%YesterY%%%sDate%%%YesterM%%%sDate%%%YesterD%%
    	SET Year=%%A
    	SET Month=%%B
    	SET Day=%%C
    )
    
    :: Remove the day of week if applicable
    FOR %%A IN (%Year%)  DO SET Year=%%A
    FOR %%A IN (%Month%) DO SET Month=%%A
    FOR %%A IN (%Day%)   DO SET Day=%%A
    
    :: Today's date in YYYYMMDD format
    SET SortDate=%Year%%Month%%Day%
    
    :: Today's date in local format
    FOR %%A IN (%Date%) DO SET Today=%%A
    
    :: Strip leading zero from Day
    SET DayS=%Day%
    IF %Day:~0,1%==0 SET DayS=%Day:~1%
    
    :: Calculate yesterday's date
    IF %DayS% EQU 1 (
    	SET YesterY=%Year%
    	CALL :RollMonth
    ) ELSE (
    	SET /A YesterD=%DayS% - 1
    	SET YesterM=%Month%
    	SET YesterY=%Year%
    )
    
    :: Add leading zero to YesterD if necessary
    IF %YesterD% LSS 10 SET YesterD=0%YesterD%
    
    :: Yesterday's date in YYYYMMDD format
    SET SortYest=%YesterM%/%YesterD%/%YesterY%
    
    :: Display the results
    ECHO Format:     YYYYMMDD  (%LocalFormat%)
    ECHO.==================================
    ECHO Today:      %SortDate%  (%Today%)
    CALL ECHO Yesterday:  %SortYest%  (%YesterLocal%) 
    
    
    :: Done
    
    
    
    ENDLOCAL
    GOTO:EOF
    
    
    :RollMonth
    IF %Month%==01 (
    	SET YesterD=31
    	SET YesterM=12
    	SET /A YesterY = %Year% - 1
    )
    IF %Month%==02 (
    	SET YesterD=31
    	SET YesterM=01
    )
    IF %Month%==03 (
    	SET YesterD=28
    	SET YesterM=02
    	CALL :LeapYear
    )
    IF %Month%==04 (
    	SET YesterD=31
    	SET YesterM=03
    )
    IF %Month%==05 (
    	SET YesterD=30
    	SET YesterM=04
    )
    IF %Month%==06 (
    	SET YesterD=31
    	SET YesterM=05
    )
    IF %Month%==07 (
    	SET YesterD=30
    	SET YesterM=06
    )
    IF %Month%==08 (
    	SET YesterD=31
    	SET YesterM=07
    )
    IF %Month%==09 (
    	SET YesterD=31
    	SET YesterM=08
    )
    IF %Month%==10 (
    	SET YesterD=30
    	SET YesterM=09
    )
    IF %Month%==11 (
    	SET YesterD=31
    	SET YesterM=10
    )
    IF %Month%==12 (
    	SET YesterD=30
    	SET YesterM=11
    )
    GOTO:EOF
    
    
    :LeapYear
    
    
    SET /A mod400 = %Year% %% 400
    SET /A mod100 = %Year% %% 100
    SET /A mod4   = %Year% %% 4
    IF %mod400% EQU 0 (
    	SET YesterD=29
    ) ELSE (
    	IF %mod100% EQU 0 (
    		SET YesterD=28
    	) ELSE (
    		IF %mod4% EQU 0 (
    			SET YesterD=29
    		) ELSE (
    			SET YesterD=28
    		)
    	)
    )
    GOTO:EOF

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 109
    Points : 168
    Points
    168
    Par défaut
    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
    @echo off
    
    ::Decomposition de la date d'aujourd'hui (Jour Mois Annee)
    set /a J=100%DATE:~0,2% %% 100
    set /a M=100%DATE:~3,2% %% 100
    set /a A=%DATE:~6,4%
    
    ::Calcul du Jour Julien d'hier
    set /a JJ=(1461 * (%A% + 4800 + (%M% - 14) / 12)) / 4 + (367 * (%M% - 2 - 12 * ((%M% - 14) / 12))) / 12 - (3 * ((%A% + 4900 + (%M% - 14) / 12) / 100)) / 4 + %J% - 32075 - 1
    
    ::Transformation du Jour Julien en date (Jour Mois Annee)
    set /a L=%JJ% + 68569
    set /a N=(4 * %L%) / 146097
    set /a L=%L% - (146097 * %N% + 3) / 4
    set /a I=(4000 * (%L% + 1)) / 1461001
    set /a L=%L% - (1461 * %I%) / 4 + 31
    set /a J=(80 * %L%) / 2447
    set /a JOUR=%L% - (2447 * %J%) / 80
    set /a MOIS=%J% + 2 - (12 * (%J% / 11))
    set /a ANNEE=100 * (%N% - 49) + %I% + (%J% / 11)
    
    ::Ajout de zero si necessaire
    IF %JOUR% LSS 10 SET JOUR=0%JOUR%
    IF %MOIS% LSS 10 SET MOIS=0%MOIS%
    
    ::Resultat
    echo. & echo Date d'hier: %JOUR%/%MOIS%/%ANNEE% (US Format: %MOIS%/%JOUR%/%ANNEE%) & echo.
    pause

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Merci pour ton code. Effectivement il est plus succint que le mien mais un peu moins compréhensible et faisable pour qui débute en Batch, chose pourquoi je n'aurai jamais pondu cela comme ça

    Reste que les deux marchent très bien, mais ne fonctionne pas de la même manière, ils englobent toutefois toutes les possibilités tous les deux.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par magma² Voir le message
    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
    @echo off
    
    ::Decomposition de la date d'aujourd'hui (Jour Mois Annee)
    set /a J=100%DATE:~0,2% %% 100
    set /a M=100%DATE:~3,2% %% 100
    set /a A=%DATE:~6,4%
    
    ::Calcul du Jour Julien d'hier
    set /a JJ=(1461 * (%A% + 4800 + (%M% - 14) / 12)) / 4 + (367 * (%M% - 2 - 12 * ((%M% - 14) / 12))) / 12 - (3 * ((%A% + 4900 + (%M% - 14) / 12) / 100)) / 4 + %J% - 32075 - 1
    
    ::Transformation du Jour Julien en date (Jour Mois Annee)
    set /a L=%JJ% + 68569
    set /a N=(4 * %L%) / 146097
    set /a L=%L% - (146097 * %N% + 3) / 4
    set /a I=(4000 * (%L% + 1)) / 1461001
    set /a L=%L% - (1461 * %I%) / 4 + 31
    set /a J=(80 * %L%) / 2447
    set /a JOUR=%L% - (2447 * %J%) / 80
    set /a MOIS=%J% + 2 - (12 * (%J% / 11))
    set /a ANNEE=100 * (%N% - 49) + %I% + (%J% / 11)
    
    ::Ajout de zero si necessaire
    IF %JOUR% LSS 10 SET JOUR=0%JOUR%
    IF %MOIS% LSS 10 SET MOIS=0%MOIS%
    
    ::Resultat
    echo. & echo Date d'hier: %JOUR%/%MOIS%/%ANNEE% (US Format: %MOIS%/%JOUR%/%ANNEE%) & echo.
    pause
    Bonjour à tous,

    Recherchant des informations sur internet concernant le formatage des dates, je souhaite effectuer la même action que ce script, mais pour des fichiers d'une semaine. Et débutant dans le domaine, je ne trouve pas la manière dont je peux modifier ca.

    J'ai donc un script qui réalise une sauvegarde de mes bases de données chaque jour en créant un nouveau fichier sous la forme dump-aaaa-mm-jj.sql et je voudrais simplement supprimer ceux qui ont plus de 7 jours.

    Merci par avance.

Discussions similaires

  1. récupérer la date de la veille dans trois cellules différentes
    Par meuah dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2008, 09h51
  2. récupérer la date de la veille
    Par mromain dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/04/2008, 13h06
  3. [MySQL] récupérer une date formatée avec MySql
    Par stolx_10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/06/2007, 10h57
  4. [Conception] Récupérer une date au format francophone
    Par HwRZxLc4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/11/2006, 16h15
  5. Réponses: 1
    Dernier message: 07/06/2005, 14h00

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