Autor | Zpráva | ||
---|---|---|---|
HelenaO Profil |
#1 · Zasláno: 13. 8. 2009, 16:32:52
Dobrý den,
mám 3 formulářová pole. Do dvou zapíšu různá data (např. 13.8.2009 a 15.8.2009) a ve třetím chci mít počet dní, kolik je mezi těmito dvěma daty včetně krajních hodnot (tedy 3). Poraďte mi, prosím, jak to mám udělat. Už pár hodin pročítám diskuse a nedaří se mi to rozchodit :-( Jak mám Javascriptu říct, že obsahem pole je datum? Děkuju moc |
||
_es Profil |
#2 · Zasláno: 13. 8. 2009, 20:13:45
„Jak mám Javascriptu říct, že obsahem pole je datum? “
Musíš to brať ako obyčajný text, potom to previesť to na dátum a potom z tých dvoch dátumov vypočítať rozdiel v dňoch. |
||
peta Profil |
#3 · Zasláno: 14. 8. 2009, 07:47:38
jakpsatweb.cz - javascript - objekt date / priklady
http://www.volny.cz/peter.mlich/jpw/#cas nevim, jak je to v prikladech na jpw, ale v me uprave je to odpocet data A plati, co napsal ES, v tomto pripade musis nejdriv prevest retezce na datumy. |
||
HelenaO Profil |
#4 · Zasláno: 14. 8. 2009, 08:43:43
Můžete, prosím, alespoň naznačit, jak převedu text na datum?
Díky oběma za odpovědi. Návody nastuduju, snad se mi to spojí a rozlousknu to. Pěkný den! |
||
Joker Profil |
#5 · Zasláno: 14. 8. 2009, 09:49:25
HelenaO:
„Můžete, prosím, alespoň naznačit, jak převedu text na datum?“ var datum = new Date("14.8.2009"); anebo přes set... metody objektu Date. |
||
_es Profil |
#6 · Zasláno: 14. 8. 2009, 10:04:26 · Upravil/a: _es
HelenaO
function f(x,y){ var xa = x.split(/\D/), ya = y.split(/\D/); var xd = Date.UTC(xa[2], xa[1]-1, xa[0]), yd = Date.UTC(ya[2], ya[1]-1, ya[0]); return (yd - xd)/86400000; } Funkcia f vypočíta, o koľko v dňoch je väčší dátum y ako x. Formát: deň.mesiac.rok Oddeľovač môže byť hocičo okrem číslic. |
||
_es Profil |
#7 · Zasláno: 14. 8. 2009, 10:06:30 · Upravil/a: _es
Joker
„new Date("14.8.2009");“ Nie je isté, aký bude výsledok pri rôznych prehliadačoch, pri rôznych národných nastaveniach, jazykoch a pod. |
||
HelenaO Profil |
#8 · Zasláno: 14. 8. 2009, 10:11:29
Pro začátek předpokládám lokální užití - tedy off-line a pouze v ČR. I když se opakuju, stejně moc děkuju za rady! Budu zkoušet. Pěkný víkend všem
|
||
_es Profil |
#9 · Zasláno: 14. 8. 2009, 10:36:16
HelenaO
Tým "nie je isté" som myslel to Jokerovo riešenie. |
||
AM_ Profil |
#10 · Zasláno: 14. 8. 2009, 12:18:06
_es
to tvé taky "nie je isté", pokud se budou ty data nacházet jedno v letním a jedno v zimním čase, nebude mít jeden den 864000 sekund a ten výpočet vrátí nějaký desetinný balast. Jinak v UTC tuším existují i přestupné sekundy (1-2x do roka). Alespoň to chce výsledek zaokrouhlit, pokud se nebude počítat rozdíl data v rámci desítek tisíc let, mělo by to být přesné. |
||
_es Profil |
#11 · Zasláno: 14. 8. 2009, 12:35:13
AM_
„to tvé taky "nie je isté"“ Myslím, že tá funkcia pri správnom formáte nemôže vrátiť necelé číslo. V UTC nie je letný a zimný čas. Prestupné sekundy vo vstavaných funkciách JavaScriptu nie sú uvažované. To by sa vtedy nemohlo vôbec počítať s budúcimi dátumami, keďže nie je vopred presne známe, ako sa bude meniť rotácie Zeme. Alebo teda uveď nejaké konkrétne dva dátumy. |
||
AM_ Profil |
#12 · Zasláno: 14. 8. 2009, 13:18:43
_es
aha tak jestli se tam tohle neuvažuje tak máš asi pravdu, já někde četl, že UTC s přestupnými sekundami právě nějak počítá (lze to jednoduše zkusit - dát tam 2 datumy alespoň několik let od sebe), ale je možné, že počítačové implementace s ní skutečně nepočítají, je pravda, že těžko to předvídat dost dopředu. |
||
_es Profil |
#13 · Zasláno: 14. 8. 2009, 13:40:31 · Upravil/a: _es
AM_
„těžko to předvídat dost dopředu.“ Ono to ani predvídať nejde, v dlhšom časovom období to ovplyvňuje aj ľudstvo - napríklad veľké vodné nádrže. A ani bez toho vplyvu to asi nie je nejako presne vypočítateľné. „že počítačové implementace s ní skutečně nepočítají“ Počítajú asi tak, že sa tá sekunda "opraví" v rámci automatickej aktualizácie času. Takže časový úsek vyrátaný z rozdielu dvoch zaznamenaných časov potom nemusí zodpovedať skutočnosti. No teoretické výpočty s vymyslenými časmi sú bezchybné. |
||
HelenaO Profil |
Natrápila jsem se s tím několik hodin a stále nic. Už pomalu klesám na mysli. Vašim pokročilým diskusím už ani nerozumím :-( Poněkud jste přesáhli množinu toho, co dokážu pochopit ;o) Zkusím ještě jednou předestřít, co potřebuju. Je to nejspíš primitivní, ale snad se neurazíte.
Můj html soubor kromě jiného obsahuje: <form name="formular"> <input type="text" name="pocatek"> <input type="text" name="konec"> <input type="text" name="trvani"> </form> můj externí javascript kromě jiného obsahuje: function spocitejtrvani(){ var f = document.formular; f.trvani.value = f.konec.value - f.pocatek.value; } Ale tohle funguje jenom, když do formulářových polí "pocatek" a "konec" dám obyčejná čísla. Spočítá se rozdíl. Jakmile do těchto polí vepíšu datumy (do formulářových polí hodlám vepisovat různé datumy (ve formátu dd.mm.yyyy) a chtěla bych, aby se mi ve 3. poli ukázal počet dní, který je mezi těmito 2 daty), tak to nepočítá. Už jsem se naučila vyextrahovat z datumů vepsaných v polích jenom číslovky (použila jsem substr() ). Ale dál nevím, co s tím. Skripty, které používám jsou z jednodušších - podmínky (if, else - pokud je přepínač na hodnotě 3, napiš do pole číslo 20 atd.), sčítání, odčítání, násobení, a to zpravidla v souvislosti právě s formulářovými poli. Mějte se mnou, prosím, ještě trpělivost a zkuste mi ještě poradit. Díky moc! |
||
_es Profil |
#15 · Zasláno: 16. 8. 2009, 04:51:31
HelenaO
Celý obsah funkčného súboru: <!DOCTYPE HTML> <form id=formular> <input type="text" id=p> <input type="text" id=k> <input type="text" id=t> </form> <script> var p = document.getElementById("p"); var k = document.getElementById("k"); var t = document.getElementById("t"); p.onchange = k.onchange = p.onclick = k.onclick = p.onkeyup = k.onkeyup = p.onblur = k.onblur = v; function f(x,y){ var xa = x.split(/\D/), ya = y.split(/\D/); var xd = Date.UTC(xa[2], xa[1]-1, xa[0]), yd = Date.UTC(ya[2], ya[1]-1, ya[0]); return (yd - xd)/86400000; } function v(){t.value = f(p.value, k.value);} </script> |
||
HelenaO Profil |
#16 · Zasláno: 16. 8. 2009, 19:13:32
Óóóóó velkomožný vezíre _es!
Tisíceré díky!!! Sice tomu až tak úplně nerozumím (no dobrá, přiznávám, vůbec tomu nerozumím - zejména f(x,y), ale nebudu chamtivá, stačí mi, že to fachá) a nepodařilo se mi to zapracovat do svého externího js souboru, ale musela jsem to bídně zkopírovat a prsknout do svého html souboru, ale funguje to!!! Ještě teď kroutím hlavou. To je úžasné! Děkuji opravdu mnohokrát. Revanšovat se bohužel nemám čím. Moje rady ohledně html nebo js by sotvakomu pomohly... Když už data počítají, jdu to nějak vzhledově počesat pomocí css. Ještě jednou děkuju! |
||
Časová prodleva: 15 let
|
0