Newsgroup: it.comp.lang.perl
Titolo: come confrontare due date(per vedere se è data1<data2): come?

Vorrei confrontare due date per vedere se una è maggiore, minore o
uguale.
Come fare?
Grazie in anticipo, Grazie.

 wrote in message
news:MT0n9.45058$Eu.10...@twister1.libero.it...


 > Grazie in anticipo, Grazie.
Io una volta scrissi una funzione... che faceva una cosa del genere..
incollo qualocosa:
   ($scad_gg, $scad_mm, $scad_aa) = split(/\//, $data_scad);
    $giorni_diff =
    (
    (
    (($scad_aa - $year) * 12)
    +
    ($scad_mm - $mon)
    ) * 30
    )
    +
    ($scad_gg - $mday);
Onestamente non so spiegartela.. non mi ricordo nemmeno io come feci, cmq
funzionava :-)
Ciao

 incollo qualocosa:
Emmenomale che dici che è "qualcosa" perché qui non si capisce nemmeno dove
confronti la data. :-)
Comunque TU hai letto questo, VERO???
============= perldoc -q date ============
  How can I compare two dates and find the difference?
            If you're storing your dates as epoch seconds then simply
            subtract one from the other. If you've got a structured date
            (distinct year, day, month, hour, minute, seconds values), then
            for reasons of accessibility, simplicity, and efficiency, merely
            use either timelocal or timegm (from the Time::Local module in
            the standard distribution) to reduce structured dates to epoch
            seconds. However, if you don't know the precise format of your
            dates, then you should probably use either of the Date::Manip
            and Date::Calc modules from CPAN before you go hacking up your
            own parsing routine to handle arbitrary date formats.
========================================
Nota soprattutto il "BEFORE (enfatizzato da me) you go hacking up your own
parsing routine to handle arbitrary date formats."
Sono SICURO che quindi tu saprai tutto non solo delle funzioni timelocal e
timegm, ma soprattutto dei moduli Date::Manip e Date::Calc, e sono SICURO
che siccome analizzandoli ne hai dedotto che non fanno le cose come si deve
hai deciso di scriverti la tua sub :-)))).
Casinista, però un casino simpatico. Sei di Napoli vero? ;-)


 confronti la data. :-)
ok Didi, ora te la spiego.
Questa funzione serviva (e serve a tutt'oggi) in un programma di
amministrazione di un isp per controllare le scadenze dei contratti di
hosting.
Mettiamo che un dominio è stato comprato il 15/10/2001 e oggi è 04/10/2002,
il calcolo dovrebbe restituire quanti giorni mancano alla scadenza.
Allora, funziona cosi':
innanzitutto le date erano scritte, sottoforma di scalare, nel formato
"10/10/2001", oppure "1/1/2001"
$data_scad = "15/10/2002";   # La data di scadenza del contratto
$today_date = "4/10/2002";   # La data di oggi
my($mday, $mon, $year) = split(/\//, $today_date);
($scad_gg, $scad_mm, $scad_aa) = split(/\//, $data_scad);
$giorni_diff = (((($scad_aa - $year) * 12) + ($scad_mm - $mon)) * 30) +
($scad_gg - $mday);
print $giorni_diff;
# dice quanti giorni di differenza ci sono fra una data e l'altra, basandosi
sull'anno commerciale di 30 giorni al mese.
Ciao,
Guido.

 Casinista, però un casino simpatico. Sei di Napoli vero? ;-)
In verità ti dico.. (come diceva anche un mio amico...)
all'epoca dei fatti, non sapevo nemmeno della possibilità di Perl di usare i
moduli. Quindi tutto cio' che scrivevo, lo facevo esclusivamente spremendo
le meningi e usando solo i comandi "built-in", cercando di riciclare vecchie
routine scritte in QBASIC all'epoca della scuola e del militare. Quando poi
ho scoperto il comando "use", il CPAN e, non ultimo, il programma "ppm",
allora ho capito che Perl è IL linguaggio di programmazione che fa x me :-)
In ogni caso, m'è rimasto il brutto (o bel) vizio di cercare prima di fare
tutto "manualmente" e poi (dopo invani tentativi) rivolgermi ai moduli... ma
piu' che altro per pigrizia nella ricerca :-) e poi perché spesso un modulo
contiene mille altre cose che in realtà non usi.
Sì, sono di Napoli... da che si capisce? :-))
Ciao!

Cosě va MOLTO meglio, pensa che persino io la posso capire :-).
Solo che con i bisestili come la mettimao?


 wrote in message
news:ankn75$dbc$1...@lacerta.tiscalinet.it...


 Solo che con i bisestili come la mettimao?
Beh, io ho detto che quel calcolo va bene per l'anno commerciale di 360
giorni. I bisestili non contano :-)
Se avessi voluto fare un conto sull'anno solare, avrei dovuto costruire
l'array con i numeri dei giorni x ogni mese e fare un controllo man mano,
oltre che dividere preventivamente l'anno per 4 in modo da stabilire se
febbraio dev'essere di 28 o di 29 giorni..
A questo punto credo valga la pena usare uno di quei bei moduletti... eh già
:-)