Problème de calculs sur les dates

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Blanchou
Batcheur occasionnel
Messages : 3
Enregistré le : 11 sept. 2009 15:13

Problème de calculs sur les dates

Message 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.
Laddy
SuperBatcher
Messages : 190
Enregistré le : 04 juil. 2008 13:40

Re: Problème de calculs sur les dates

Message 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 ?
Envie de partager vos programmes :
Poster vos codes sur BatchClipboad.info
Devatoria
Batcheur débutant
Messages : 10
Enregistré le : 10 sept. 2009 10:59
Localisation : Saint-Etienne

Re: Problème de calculs sur les dates

Message 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 ;)
Dev :

BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
Blanchou
Batcheur occasionnel
Messages : 3
Enregistré le : 11 sept. 2009 15:13

Re: Problème de calculs sur les dates

Message 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.
Devatoria
Batcheur débutant
Messages : 10
Enregistré le : 10 sept. 2009 10:59
Localisation : Saint-Etienne

Re: Problème de calculs sur les dates

Message 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:
Dev :

BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
Blanchou
Batcheur occasionnel
Messages : 3
Enregistré le : 11 sept. 2009 15:13

Re: Problème de calculs sur les dates

Message 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
Devatoria
Batcheur débutant
Messages : 10
Enregistré le : 10 sept. 2009 10:59
Localisation : Saint-Etienne

Re: Problème de calculs sur les dates

Message par Devatoria »

Merci bien pour le code ;)

Cordialement.
Dev :

BATCH, xHTML 1.0 Strict, CSS, PHP, SQL, ASP.NET, VB.NET, VBS.
lulue26
Batcheur occasionnel
Messages : 2
Enregistré le : 09 nov. 2015 11:59

Re: Problème de calculs sur les dates

Message 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
lulue26
Batcheur occasionnel
Messages : 2
Enregistré le : 09 nov. 2015 11:59

Re: Problème de calculs sur les dates

Message par lulue26 »

sinon d'avoir la date du dernier jour du mois précédent si il y a une formule qui existe
temuntte
Batcheur occasionnel
Messages : 5
Enregistré le : 01 déc. 2015 07:06

Re: Problème de calculs sur les dates

Message 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
Répondre