Problème de calculs sur les dates
Modérateur : WIN32-[GG]
Problème de calculs sur les dates
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.
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
Bonjour
par rapport à quoi te bases tu ?
as tu un exemple concret ?
peux tu expliquer ceci ?rem Si le mois est égale à 0 (après le calcul mois -1) alors on enlève 1 à l'année
par rapport à quoi te bases tu ?
as tu un exemple concret ?
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
Poster vos codes sur BatchClipboad.info
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 10 sept. 2009 10:59
- Localisation : Saint-Etienne
Re: Problème de calculs sur les dates
Salut !
Moi pour découper mes dates j'utilise cette formule :
Ensuite, si tu veux soustraire par exemple 1 à l'année, tu fais :
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.
Bye
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
)
Code : Tout sélectionner
set /a annee=%annee%-1
De plus, je ne sais pas si je répond vraiment à ton problème.
Bye
Dev :
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
Re: Problème de calculs sur les dates
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.
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.
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 10 sept. 2009 10:59
- Localisation : Saint-Etienne
Re: Problème de calculs sur les dates
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.
P.S : Désolé pour le tokens, une petite erreur de ma part
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%
Dev :
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
Re: Problème de calculs sur les dates
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
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
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 10 sept. 2009 10:59
- Localisation : Saint-Etienne
Re: Problème de calculs sur les dates
Merci bien pour le code
Cordialement.
Cordialement.
Dev :
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
Re: Problème de calculs sur les dates
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
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
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
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