Newsgroup: it.comp.os.dos
Titolo: Problema anno bisestile

Salve,
sto facendo un file bach per contare la differenza di giorni fra due date.
Con il comando
set/a T=%date:~-4% %4
volevo vedere se l'anno era bisestile (se T=0 l'anno è bisestile).
Qui ho incontrato i problemi.
Se questa riga la inserisco nel prompt del Dos mi da come risultato T=0 , se
la inserisco all'interno del file bach mi da come risultato T=2004.
Qualcuno sa dirmi perché?
S.O. Win2K sp4
Grazie.
L.

 set/a T=%date:~-4% %4
In base a che dovrebbe funzionare?
%date:~-4% ora e' 2004
%4 che dovrebbe fare?
Siccome in batch il risultato e' sempre arrotondato
la soluzione che mi viene in mente e':
set /a c=%date:~-4%-%date:~-4%/4*4
Cioe' divido e moltiplico per 4 l'anno attuale e sottraggo il
risultato dall'anno attuale.
c risulta 0 solo se l'anno e' bisestile
-- 
Marco

 ha scritto nel messaggio
news:a4uufkmcgq1p$.mms@MRC.MIR.SID.75...

Ciao,
Il comando
set/a T=%date:~-4% %4
l'ho trovato vagando in Internet e dovrebbe avere la stessa funzione del
tuo, cioč dare la differenza di 2004 diviso 4.
Se provi ad inserirlo in un prompt del Dos ti da risultato 0, cioč facendo
2004 diviso 4 non avanza niente.
Se provi cambiando la data del tuo computer a 2003  vedrai che ti da
risultato 3, infatti facendo 2003 diviso 4 avanza 3.
Quando T=0 l'anno č bisestile (2004, 2008, 2012, ecc.).
Perň funziona solo in un prompt del Dos, facendo un file.bat non funziona
piů.
Mi piacerebbe sapere perchč.
Grazie.
L.

 tuo, cioč dare la differenza di 2004 diviso 4.
Prova questo:
set/a T=%date:~-4% %11
Viene restituito 2 ,mentre il resto e' 18...
In ogni caso nel file batch devi raddoppiare l'ultimo %
set/a T=%date:~-4% %%4
echo %T%
-- 
Marco

 set/a T=%date:~-4% %4
%4 lo dovresti riscrivere altrimenti lo
si confonde con il quarto parametro passato
al prompt:
set/a T=%date:~-4% % 4


Ecco dove sbagliavo!
Nei file bach si deve mettere %% invece di % (che pirla che sono).
Ho provato
set/a T=%date:~-4% %%4
e funziona benissimo.
Grazie mille.
Ciao.
Luca

 18 moltiplicato 11 = 2002, quindi è giustissimo il resto di 2.
Si',hai ragione.
A dire la verita' non conoscevo % come operatore.
Nell'help di set c'e' un riferimento ma nessun esempio.
Grazie dell'informazioe (involontaria!)
-- 
Marco

 Quando T=0 l'anno č bisestile (2004, 2008, 2012, ecc.).
Attenzione! E' vero sě che l'hanno č bisestile se divisibile per 4 ma non
quando č divisibile per 400!
Infatti il 2000 non era bisestile!
Ciao!
-- 
Esteban
www.seber.it
Questo post č stato scritto con bit riciclati.

 Ciao!
Ma non era il contrario?
Cioč gli anni che finiscono con 00 non sono bisestili, ad eccezione di
quelli divisibili per 400.
Infatti il 2000 *era* bisestile!
Maci


Ecco, sě, hai ragionissimo... sapevo che c'era qualcosa che aveva a che fare
con il 400 ed ho buttato giů la mia teoria senza neppure dare un'occhio al
calendario del 2000 che per pigrizia (o forse per la bella signorina) non ho
ancora buttato.
Grazie per la rinfrescata!


 con il 400 ed ho buttato giů la mia teoria 
Senza teorie la cosa e' molto semplice,
siccome l'anno 4 e' bisestile,e gli
anni bisestili sono ogni 4 anni,e' logico
che la condizione sufficiente perche' un anno
sia bisestile e' che sia un multiplo di 4!
-- 
Marco


Non è sufficiente:
1700, 1800, 1900, 2100 sono ovviamente multipli di 4 ma *non* sono
bisestili.
In questo modo si compensa il fatto che la lunghezza dell'anno solare è di
365 giorni, 5 ore ?? minuti primi (e non 6 ore). Con questo giochino, credo
derivi dal calendario giuliano, sono compensati errori per parecchi secoli.
Maci

 derivi dal calendario giuliano, sono compensati errori per parecchi secoli.
Grazie,non me lo ricordavo!
-- 
Marco

 Marco
Da quello che ne so io funziona così:
Sono bisestili tutti gli anni che sono divisibili per 4 (2004, 2008, 2012,
ecc.)
ad eccezione di quelli che sono divisibili per 100 (1800, 1900, ecc.)
con l'eccezione di quelli che sono divisibili per 400 (1600, 2000, 2400,
ecc.)
che tornano ad essere bisestili.
Tutto questo per *aggiustare* il nostro calendario  con il calendario
astronomico.
Luca