Newsgroup: it.comp.www.php
Titolo: getdate e un giorno in meno

Oggi, su questa pagina, mi segna un giorno sbagliato
http://www.isketch-italian.net/home2.php
le righe di codice incriminato sono
$today=getdate();
print $today['yday'];
Quello che ottengo a video è 133, mentre oggi è il 134 giorno dell'anno
31 a gennaio + 28 febbraio + 31 marzo + 30 aprile + 14 maggio=134 (se la mia
matematica funziona ancora).
Ho svuotato tutte le cache possibili e immaginabili, ma mi segna sempre 133
invece di 134. Qualcuno sarebbe così gentile da controllare?
-- 
doGmaI

 matematica funziona ancora).
http://it2.php.net/manual/en/function.getdate.php
"yday"    Numeric representation of the day of the year   0 through 365
Parte da 0 e arriva a 365, quindi e` sfasato di un giorno, devi
aggiungere 1.
Lo citano anche nei commenti in quella pagina.
Bye.
-- 
Alessandro Pellizzari

 
http://www.isketch-italian.net/home2.php
[..]
stai esponendo il loghi W3C senza che le pagine siano realmente valide..
-- 
www.iuz-lab.info

Il Sat, 14 May 2005 15:57:05 +0200, Alessandro Pellizzari scrisse:

Mmmmmm non credo però che sia solo quello il problema.
Vediamo riporto qui le tre righe
$birthday=getdate(strtotime($dati['compleanno']));
$today=getdate();
$diffDate=$birthday['yday']-$today['yday'];
Se anche la ['yday'] parte da 0 e arriva a 365, dovrebbe cmq ritornare un
valore corretto.
Mi spiego.
Nella birthday mi trovo 135 che rappresenta correttamente il 15-maggio
mentre nella today mi trovo 133 che rappresenta il 14 maggio (ovvero oggi)
Qualcosa non mi torna. Perchè il 15 maggio è 135 e il 14 è 133?
L'unica "cosa strana" è che la data di compleanno è memorizzata con
15-5-0000 perchè non mi è stato fornito l'anno. Potrebbe a sto punto essere
un problema con l'anno 0000?
-- 
doGmaI

Il Sat, 14 May 2005 18:46:40 GMT, doGmaI scrisse:

Curiosa sta cosa...
Se la data nel database è 15-05-0000 la differenza
$birthday['yday']-$today['yday'] mi restituisce il valore due
se ci metto 15-05-1900, mi restituisce 0
-- 
doGmaI

 
l'anno 0 ti restituisce problemi (con tutta probabilita' non e' esistito)..
l'anno 1900 e' un bisestile.. e penso che non sapere l'anno non sia una cosa
buona in quanto non puoi determinare se l'anno di nascita era bisestile
oppure no..
cmq sia prova a guardare..
http://php.net/date
 
tra le note degli utenti ci sono funzioni riguardanti la differenza tra due
date..
fammi sapere..
-- 
www.iuz-lab.info

> se ci metto 15-05-1900, mi restituisce 0
[..]
e comunque
[quoting 
http://php.net/strtotime
]
Note: The valid range of a timestamp is typically from Fri, 13 Dec 1901
20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that
correspond to the minimum and maximum values for a 32-bit signed integer.)
Additionally, not all platforms support negative timestamps, therefore your
date range may be limited to no earlier than the Unix epoch. This means
that e.g. dates prior to Jan 1, 1970 will not work on Windows, some Linux
distributions, and a few other operating systems. 
[/quoting 
http://php.net/strtotime
]
-- 
www.iuz-lab.info

Il Sat, 14 May 2005 19:15:46 GMT, iuz scrisse:

Questo m'era sfuggito.
Cmq avevo avuto anch'io l'impressione che il problema fosse nell'anno
(ovvero l'anno 0000 e il 1900) quindi ho pensato bene di fare una cosa
"intelligente".
Nel database lascio 15-05-0000 e questa è la data che leggo. Poi, prima di
fare la differenza vado a settare l'anno con lo stesso anno contenuto in
$today (ovvero 2005) tramite una $birthday['year']=$today['year'] (ho
provato a stampare e mi trovo correttamente 15-05-2005). La sorpresa è però
che mi ritrovo cmq 2 come differenza, ovvero
$birthday contiene 15-05-2005
$today contiene 14-05-2005
Stampando la cella ['yday'] birthday['yday'] mi da 135, mentre today['yday']
mi da 133, sempre sto maledetto 2 di troppo :(
Adesso intanto vado a leggermi quello che mi hai suggerito nell'altro post,
vediamo se c'è qualche gabola. Ma la cosa mi ha lasciato alquanto basito
-- 
doGmaI

 stai esponendo il loghi W3C senza che le pagine siano realmente valide..
Hai perfettamente ragione, mi son dimenticato di levare da quella il logo.
Quella cmq è una pagina provvisoria, in cui ho fatto dei test e non ho
controllato che fosse valida o meno, semplicemente ho copiato il codice
della vera home (che è 
http://www.isketch-italian.net/home.php
) e questa mi
pare possa avere il logo.
Cmq grazie dell'avvertimento
-- 
doGmaI