Autor | Zpráva | ||
---|---|---|---|
Beduin Profil * |
#1 · Zasláno: 2. 5. 2007, 18:35:25
Potřeboval bych poradit. Mám proměnné (den1, mesic1, rok1, den2, mesic2, rok2), které načítám z formuláře a potřebuju zjisitit rozdíl ve dnech, ale nevím jak na to.
Takže třeba data 2.5.2007 a 26.4.2007 - rozdíl je 6 dní. Ale nevím, jak toho docílit. Prosím, poraďte. |
||
zivan Profil |
#2 · Zasláno: 2. 5. 2007, 19:33:14
Bez kontrol.
function rozdilVeDnech(prvni, druhe) |
||
Beduin Profil * |
#3 · Zasláno: 2. 5. 2007, 19:55:16
Díky, ono to fakt funguje...
|
||
Časová prodleva: 10 dní
|
|||
Johnie Profil * |
#4 · Zasláno: 12. 5. 2007, 21:25:25
Je tam jeden problém, nepočítá to s přestupnými roky, zcela je to ignoruje.
Věděl by někdo, co s tím? |
||
YoSarin Profil |
#5 · Zasláno: 12. 5. 2007, 21:50:31
Johnie
Jsi si jistý že to ty přestupné roky ignoruje? Já bych řekl že getTime si s tím poradí... |
||
Johnie Profil * |
#6 · Zasláno: 13. 5. 2007, 00:48:04
Bohužel, je to pravda ... Zkoušel jsem zjistit rozdíl v několika vzdálených datech.
Například 1.1.1911 2.2.1922 getTime zjistí, že rozdíl ve dnech činí 4047 dní. Jenže, je to k nevíře, ale je to ve skutečnosti 4050 dní. Od 1.1.1911 zbývá do konce roku 364 dní. roky mezi léty 1911 a 1922, tyto dva nepočítaje, činí 10 let, tedy za normálních okolností 3650 dní ... jenže jsou v nich přece jen tři přestupné roky a sice 1912, 1916 a 1920, takže to máme 3 dny navíc ... v roce 1922 zbývá do doby 2.2.1922 přesně 33 dní. Sečteme-li 364 3650 3 33 ------- 4050 dní, tohle je skutečný počet dní a ty tři dny tam budou lítat .... Možná by to šlo nějak jednoduše ošetřit ... Přestupné roky jsou dělitelné čtyřmi beze zbytku. |
||
YoSarin Profil |
#7 · Zasláno: 13. 5. 2007, 01:02:35
Tomu se těžko věří... z definice:
The getTime() method returns the number of milliseconds since midnight of January 1, 1970. a pokud zadáš 2.2.1922 tak jen těžko můžu říct co z toho vylezlo... :) Zkus to na nějaká novější data. Jinak, provedu důkaz: pokud D1, D2 jsou data a T1, T2 jsou timestampy těchto dat (tedy počet milisekund od dané půlnoci do daného data), pak rozdíl mezi T1 a T2 je počet milisekund, které uplynuly mezi D1 a D2. Tudíž tam musí to ošetření být, jináč by to byla fce na prd. Ale možná je to jen špatně implementované (ta funkce getTime()). :) |
||
Johnie Profil * |
#8 · Zasláno: 13. 5. 2007, 09:16:55
No, s tím, že by to mělo brát data po 1.1.1970 je to zajímavé.
Ale ani tato data to správně nepočítá. Zkusil jsem tato dvě data: 1.1.1970 2.2.1998 getTime říká, že rozdíl ve dnech činí 10256 dní. Skutečnost je ale přesně 10259 dní, myslím, že se nepletu, posuďte sami ... Od 1.1.1970 zbývá do konce roku 364 dní. roky mezi léty 1970 a 1998, nepočítaje tyto dva roky, činí 27 let, takže 27*365 = 9855 Přestupných roků bylo 7 a sice roky 1970, 1974, 1978, 1982, 1986 1990 a 1994. Přestupný byl i rok 1998, ale ten nepočítám, protože koncové datum je 2.2. a tedy nebude přestupným rokem ovlivněno. v roce 1998 zbývá do doby 2.2.1998 přesně 33 dní. Sečteme-li 364 9855 7 33 ------- 10259 dní, nevím proč, ale zase je rozdíl 3 dny. Nevím, k čemu getTime je, když dělá takový chaos. Pokud by to někdo dovedl nějak obejít nebo zmáknout v javascriptu, byť méně elegantně, dejte vědět. |
||
Mastodont Profil |
#9 · Zasláno: 13. 5. 2007, 09:32:50
V Excelu je rozdíl těchto dat taky 10 259 dnů.
|
||
zivan Profil |
#10 · Zasláno: 13. 5. 2007, 09:56:09 · Upravil/a: zivan
V cem a jak pocitas rozdil pres gettime? Zkousel jsem ten posledni rozdil dat a ta fce rozdilVeDnech() mi spocitala spravne 10259 dni.
A rozdil mezi daty 1.1.1911 a 2.2.1922 je taky spravne - 4050 dni. |
||
Mastodont Profil |
#11 · Zasláno: 13. 5. 2007, 10:06:43 · Upravil/a: Mastodont
<script>function rozdilVeDnech(prvni, druhe) Vrací 10 256. Mám to tu v prohlížeči. |
||
zivan Profil |
#12 · Zasláno: 13. 5. 2007, 10:11:48
No jo, ale ty porovnavas jine datumy :-) Cislovani mesicu zacina od nuly.
Zkus to jeste jednou a u obou mesicu ve scriptu odecti jednicku. |
||
Mastodont Profil |
#13 · Zasláno: 13. 5. 2007, 10:14:41
Selfpwned. Stane se.
|
||
Johnie Profil * |
#14 · Zasláno: 13. 5. 2007, 12:07:05
No chlapi, je to zajímavé. Vypadá to, že by to mohlo být v tom číslování měsíců...
Já jsem ale v javascriptu laik, mohli byste mi napsat sem dát scriptík, kde by už bylo začleněno odečítání té jedničky od obou měsíců? Že by se to celé jen zkopírovalo, hodilo na web a fungovalo? Dost by mi to pomohlo. Díky. |
||
Johnie Profil * |
#15 · Zasláno: 13. 5. 2007, 14:03:21
Chlapi, už mi to běží, bylo to fakt v tom číslování měsíců,
díky zivane a vsem! |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0