| Autor | Zpráva | ||
|---|---|---|---|
| Martin87 Profil * |
#1 · Zasláno: 9. 6. 2009, 12:02:27
Dobry den, mam problem s pocitanim veku. Napr. kdyz zadam datum narozeni 9. ledna, tak se mi zobrazi 4 mesice a 29 dni a pritom by melo 5 mesicu... Nevite, kde je chyba?
$stamp = strtotime("09 january 2009 00:00:00");
$stamp2 = strtotime("now");
$diff = ($stamp2 - $stamp);
$years = floor($diff / 31556927.29);
$months = floor(($diff -$years * 31556927.29)/ 2629743.941);
$days = floor(($diff- $years * 31556927.29 - $months * 2629743.941) / 86400);
$return = "$years let $months mesicu a $days dni";
echo $return;
|
||
| petr 6 Profil |
#2 · Zasláno: 9. 6. 2009, 12:17:42 · Upravil/a: petr 6
Mezi 9. lednem a 9. unorem je mesic. A mezi 9. unorem a 9. breznem je taky mesic. Ackoliv v prvnim pripade se jedna o 31 dni a v druhem o 28 (nebo 29) dni.
Tam bude asi "chyba" - ty mas mesic definovany jako 30.44 dni, takze v tvem pripade 4 mesice + 29 dni = 150.75 dni < 5 mesicu = 5*30.44 dni = 152.18 dni Jinymi slovy: Chyba je v uvaze, ze vsechny mesice jsou stejne dlouhe |
||
| Martin87 Profil * |
#3 · Zasláno: 9. 6. 2009, 12:29:54
A nesel by ten kod lehce upravit, aby to slo spravne? Nebo je to od zakladu spatne?
|
||
| petr 6 Profil |
#4 · Zasláno: 9. 6. 2009, 13:18:34 · Upravil/a: petr 6
Zalezi na tvoji definici mesice.
Ja bych to udelal takto: $date="10 June 2008";//napr. toto datum vyhodi 0 years 11 months 30 days, protoze od 10.6.2008 jeste neuplynul cely rok
$daydiff=date("j")-date("j",strtotime($date));
$monthdiff=date("n")-date("n",strtotime($date));
$yeardiff=date("Y")-date("Y",strtotime($date));
if($daydiff<0){
$daydiff=date("j")+date("t",strtotime("-1 month"))-date("j",strtotime($date));
$monthdiff--;
}
if($monthdiff<0){
$monthdiff+=12;
$yeardiff--;
}
echo $yeardiff." years, ".$monthdiff." months, ".$daydiff." days"; |
||
| Martin87 Profil * |
#5 · Zasláno: 9. 6. 2009, 13:38:21
petr 6
Diky moc |
||
| petr 6 Profil |
#6 · Zasláno: 9. 6. 2009, 13:47:36
Neni zac, mne se to taky hodi, akorat koukam, ze radek 6 jde zapsat jednoduseji
$daydiff+=date("t",strtotime("-1 month"));
|
||
|
Časová prodleva: 17 let
|
|||
0