Page 1 sur 1

Problème de calculs sur les dates

Posté : 11 sept. 2009 15:52
par Blanchou
Bonjour à tous,
je viens juste de m'inscrire car j'ai un problème dans le premier programme que je suis en train d'écrire (je commence juste à programmer en DOS):

J'ai besoin de déduire d'un mois ou d'une année un nombre (Ex. 2009 - 1 = 2008 ; 12 - 1 = 11 etc.)
Voici une partie de mon programme:

rem
rem Séparation de la date du jour en %xj% = jour, %xm% = mois et %xa% = année.
SET xj=%date:~0,2%
SET xm=%date:~3,2%
SET xa=%date:~6,4%
rem
rem Création des variables de travail pour le test des valeurs à déduire
SET valtesjou=%xj%
SET valtesmoi=%xm%
SET valtesann=%xa%
............
.........
...
rem Si le mois est égale à 0 (après le calcul mois -1) alors on enlève 1 à l'année
IF %valtesmoi% EQU 0 SET /a valtesann=%valtesann%-1

J'ai au moment du calcul le message suivant:
"Nombre non valide. Les constantes numériques doivent être soit décimales (17), soit hexadécimales (0x11), soit octales (021). "

Je pense que les valeurs sorties de la date ne sont pas numériques, mais je ne vois pas comment résoudre ce problème en DOS.

Vous remerciant par avance de votre aide.

Re: Problème de calculs sur les dates

Posté : 11 sept. 2009 16:01
par Laddy
Bonjour
rem Si le mois est égale à 0 (après le calcul mois -1) alors on enlève 1 à l'année
peux tu expliquer ceci ?
par rapport à quoi te bases tu ?
as tu un exemple concret ?

Re: Problème de calculs sur les dates

Posté : 11 sept. 2009 16:24
par Devatoria
Salut !

Moi pour découper mes dates j'utilise cette formule :

Code : Tout sélectionner

for /f "usebackq tokens=1-4 delims=/ " %%i in (`echo %date%`) do (
set jour=%%i
set mois=%%j
set annee=%%k
)
Ensuite, si tu veux soustraire par exemple 1 à l'année, tu fais :

Code : Tout sélectionner

set /a annee=%annee%-1
Le problème reste que je ne sais pas si ce code fonctionne sous NT.

De plus, je ne sais pas si je répond vraiment à ton problème. :oops:

Bye ;)

Re: Problème de calculs sur les dates

Posté : 14 sept. 2009 09:57
par Blanchou
Merci pour ton aide.

Je pense avoir trouvé le fond du problème:

Les additions et les soustractions ne fonctionnent que quand il n'y a pas de 0 devant le chiffre:
ex.
Novembre 11
Décembre 12
Année 2008
Année 2009
Jour 14
Jour 10

mes tests étant réalisés à ce jour (14/09/2009), je peux déduire du jour (14) de l'année (2009) mais pas du mois (09) car je pense que le système considère qu'un chiffre avec un 0 devant n'est pas numérique.
Merci quand même pour ton aide, je vais créer une procédure afin de transformer les variables inférieures à 10 en variables numériques.

Ps. pour ton programme j'ai changé le tokens=1-4 en tokens=2-4 car j'avais "echo" à la place du jour.

Re: Problème de calculs sur les dates

Posté : 14 sept. 2009 10:42
par Devatoria
Salut,

Après plusieurs test, effectivement, lorsque une variable contient un 0 (ex:09), on ne peut pas soustraire à cette variable.

Quand je soustrais 1 à 09 j'obtiens un message d'erreur.

Code : Tout sélectionner

set mois=09
set /a res=%mois%-1
echo %res%
P.S : Désolé pour le tokens, une petite erreur de ma part :oops:

Re: Problème de calculs sur les dates

Posté : 14 sept. 2009 11:53
par Blanchou
Pour ceux qui veulent une solution à ce problème, voici la mienne:

rem Si le mois est inférieur à 10
IF %mois% LSS 10 goto xxx

rem - - - - - - - - - - - - - - - autre condition
rem - - - - - - - - - - - - - - -

rem Sous Programme xxx
rem alors on récupère la partie de droite de la variable mois (ex. 09 = 9) grâce au
rem délimiteur "0"
:xxx
FOR /f "usebackq delims=0" %%a in ('%mois%') do (
set mois=%%a
)
set /a mois=%mois%-1
echo mois numerique: %mois%

Bien cordialement

Re: Problème de calculs sur les dates

Posté : 14 sept. 2009 15:29
par Devatoria
Merci bien pour le code ;)

Cordialement.

Re: Problème de calculs sur les dates

Posté : 09 nov. 2015 12:12
par lulue26
bonjour,

je voudrais faire une commande pour avoir date de du jour - 1 mois
j'arrive à obtenir le mois d'avant avec set/a sous=%date~3,2%-1 mais je n'arrive pas à avoir la date entier au format JJMMAAA avec ma valeur trouvée pour le mois.

merci de votre aide

Re: Problème de calculs sur les dates

Posté : 09 nov. 2015 12:16
par lulue26
sinon d'avoir la date du dernier jour du mois précédent si il y a une formule qui existe

Re: Problème de calculs sur les dates

Posté : 10 déc. 2015 10:54
par temuntte
Bien entrer les dates et heures sous la forme 16/09/2014 08:00 puis mettre les cellules en format personnalisé mm/jj/aaaa hh:mm pour avoir un affichage sous la forme 09/16/2014 08:00 et la formule fonctionne