Autor | Zpráva | ||
---|---|---|---|
Venushja Profil |
#1 · Zasláno: 18. 1. 2009, 02:07:18
Zdravim lidi
mam tu problem delam takovej system na vypocet kolik ti je let a kolik ti zbyva do narozenin ale rpoblem je v tom ze kdyz tam treba zadam treba 17.01.1993 a dnes je 18.01.2009 tak problem je v tom ze se pred cislici u dne objeví mínus a to je docela divny nejde nako udelat aby se pokazdy objevilo +cislo ? Treba do tvy narozenim zbyva 1 den a ne -1 den ??? a zase problem je v tom kdyz otocim promenne tak to je zase obracene cislo vetsi nez datum hodi pred sebe vzdycky - pred cislo a uz si s tim nevim rady vubec. |
||
grimword Profil |
#2 · Zasláno: 18. 1. 2009, 03:42:16
nechceš sem dát ten skript co už máš? ono se přece jenom líp odráží od již nějakého základu než ti to psát celé od začátku
|
||
tiso Profil |
#3 · Zasláno: 18. 1. 2009, 03:45:25
Venushja
if($cislo < 0){$cislo+=365;} |
||
imploder Profil |
#4 · Zasláno: 19. 1. 2009, 12:55:26
Vyrobil jsem tohle.
Vypíše to za kolik měsíců a dnů budeš mít ode dneška narozeniny; přestupný rok se zjišťuje date("L"). To je ale pro letošek, takže když tam budeš dodělávat další roky na přesné určení doby od narození, tak to budeš muset vyřešit. Date("L") vrací jestli je přestupný rok jenom pro aktuální datum, nevím, jak by se to zjišťovalo pro jiné roky. |
||
imploder Profil |
#5 · Zasláno: 19. 1. 2009, 13:00:34 · Upravil/a: imploder
Jo a tahle funkce vracející tvar podstatného jména pro použití s určitým číslem se možná bude hodit i někomu jinému.
/* Vrátí tvar podstatného jména pro použití společně s číslem jako výraz v 1. pádě. * např. 1 motor, 3 motory, 10 motorů * pole tvarů: * $nsg = tvar v jednotném čísle 1. pádě (pro číslo 1) * $npl = tvar v množném čísle 1. pádě (od 2 do 4) * $gpl = tvar v množném čísle 2. pádě (ostatní čísla a pojmenované skupiny (např. horda *vlků*)) */ function napocitej($pocet, $nsg, $npl, $gpl) { if($pocet==1) return $nsg; if($pocet>1 && $pocet<5) return $npl; return $gpl; } |
||
svadla Profil |
#6 · Zasláno: 19. 1. 2009, 13:04:08
Venushja
a abs() by to nevyresilo? |
||
imploder Profil |
#7 · Zasláno: 19. 1. 2009, 13:14:53
svadla
To rozhodně ne, třeba pokud by ses narodil 18.1., tak by ti to potom spočítalo, že zítra máš narozeniny, i když ve skutečnosti je máš až za rok bez jednoho dne. |
||
svadla Profil |
#8 · Zasláno: 19. 1. 2009, 13:27:00
imploder
pravda |
||
charlie22 Profil * |
#9 · Zasláno: 19. 1. 2009, 13:49:55
..podle me to je uplne z cesty tohle reseni..uz jsem to resil v jinem vlakne, nemuzu ho ted najit, ale opet doporucuji prostudovat funkci
strtotime() <? $datumNarozeni = strtotime('20.10.1985'); $aktualniCas = time(); $aktualniRok = date('Y',$aktualniCas); $oslavaLetos = strtotime('20.10.'.$aktualniRok) - $aktualniCas; //kontrola narozenin if ($oslavaLetos<0) echo 'Narozeniny jsi uz mel, ale asi si to nepamatujes'; if ($oslavaLetos==0) echo 'Gratulace, dnes mas narozeniny'; if ($oslavaLetos>0){ $mesicu = date('m',$oslavaLetos); $dnuOdZacatkuRoku = date('z',$aktualniCas); $dnuDoOslavyOdZacatkuRoku = date('z',$oslavaLetos); $dnuZbyvajicich = $dnuDoOslavyOdZacatkuRoku-$dnuOdZacatkuRoku; echo 'Do oslavy ti zbyva '.$mesicu.' měsíců, t.j. '.$dnuZbyvajicich.'dnů.'; }; ?> |
||
charlie22 Profil * |
#10 · Zasláno: 19. 1. 2009, 13:50:58
jak dostanes data do promenne $datumNarozoni je na tobe.
|
||
imploder Profil |
#11 · Zasláno: 19. 1. 2009, 14:00:08
charlie22
moje řešení je lepší v tom, že mu nevadí, když je oslava až příští rok - taky spočítá kolik zbývá měsíců a dnů |
||
charlie22 Profil * |
#12 · Zasláno: 19. 1. 2009, 14:02:12
jezisi, tak to je otazka upravy scriptu jenom, nemam na to ted cas....ale tvuj script je jaksi neprehledny a zbytecne slozity
|
||
charlie22 Profil * |
#13 · Zasláno: 19. 1. 2009, 14:09:52
..navic jaksi pocita s nejakymi cisly a vubec nepocita s realnym casem, tkaze bych ho jednoznacne zavrhl.
|
||
imploder Profil |
#14 · Zasláno: 19. 1. 2009, 14:10:27
Hlavní v tom mojem skriptu je část
$delka_m[1] = 31; $delka_m[2] = 28+date("L"); $delka_m[3] = 31; $delka_m[4] = 30; $delka_m[5] = 31; $delka_m[6] = 30; $delka_m[7] = 31; $delka_m[8] = 30; $delka_m[9] = 31; $delka_m[10] = 30; $delka_m[11] = 31; $delka_m[12] = 30; $datum1 = date("j.n."); $datum2 = $_GET['d'].".".$_GET['m']."."; sscanf($datum1, "%d.%d.", $den1, $mesic1); sscanf($datum2, "%d.%d.", $den2, $mesic2); $rozdil_d = $den2 - $den1; $rozdil_m = $mesic2 - $mesic1; if($rozdil_d < 0) { $rozdil_d += $delka_m[$mesic1]; $rozdil_m--; } if($rozdil_m < 0) $rozdil_m += 12; Zbytek je rozhraní okolo, aby to šlo pohodlně zkoušet. |
||
charlie22 Profil * |
#15 · Zasláno: 19. 1. 2009, 14:11:32
a muzes mi rict, proc tam mas to pole a nevyuzivas casove funkce PHP????
|
||
imploder Profil |
#16 · Zasláno: 19. 1. 2009, 14:13:18
charlie22
„..navic jaksi pocita s nejakymi cisly a vubec nepocita s realnym casem, tkaze bych ho jednoznacne zavrhl.“ Jestli myslíš ty čísla v poli $delka_m, tak to jsou délky měsíců a jsou to reálné hodnoty pro aktuální rok (pro jiný by se muselo nějak jinak než date("L") určit, jestli je přestupný). |
||
imploder Profil |
#17 · Zasláno: 19. 1. 2009, 14:14:30 · Upravil/a: imploder
charlie22
„a muzes mi rict, proc tam mas to pole a nevyuzivas casove funkce PHP????“ protože ty mi dají délku měsíce jenom pro dnešní datum - tj. aktuální měsíc EDIT: aspoň teda date("t") |
||
charlie22 Profil * |
#18 · Zasláno: 19. 1. 2009, 14:23:15
no a na co je tam máš, když PHP to umí vypočítat? No když myslíš, že je to lepší pře zbytečný pole, tak tě u toho nechám.
|
||
imploder Profil |
#19 · Zasláno: 19. 1. 2009, 14:27:48
charlie22
Máš pravdu, mohl bych místo toho volat date("t", <timestamp pro ten konkrétní měsíc>), ale nevím, jak ten timestamp udělat. Nepochybně to jde, moje řešení s polem je jen náhražka. Na principu počítání rozdílu datumů to nic nemění. |
||
charlie22 Profil * |
#20 · Zasláno: 19. 1. 2009, 14:30:45
timestap si vyrobis funkci
strtotime() |
||
Časová prodleva: 15 let
|
0