JS: Vypocet data

9 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Zdravim všechny. Mohl bych Vas poprosit o pomoc: Mam textove políčko, kde je zapsano datum ve formatu DD. MM. YYYY. Dale mam prvek Select. V nem mam hodnoty 10 dni, 15 dni a 30 dni. Ted mam druhe textové policko. A do nej bych potreboval javascriptem vypocitat: datum z prvniho policka + pocet dni. Mnohokrat vsem dekuji za pomoc!
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <head> <script type="text/javascript"> function change () { var dateInput = document.getElementById ("date") var daysInput = document.getElementById ("days") var resultInput = document.getElementById ("result"); var re = /^\s*(\d{1,2})\s*\.\s*(\d{1,2})\s*\.\s*(\d{4})\s*$/; var match = re.exec (dateInput.value); if (!match) { alert ("Invalid date format!"); dateInput.focus (); return; } var days = parseInt (daysInput.options [daysInput.selectedIndex].value); var day = parseInt (match [1]); var month = parseInt (match [2]); var year = parseInt (match [3]); var dateTime = new Date (year, month - 1, day).getTime (); if (isNaN (dateTime)) { alert ("Invalid date!"); dateInput.focus (); return; } var date = new Date (dateTime + days * 24 * 60 * 60 * 1000); resultInput.value = date.getDate () + ". " + (date.getMonth () + 1) + ". " + date.getFullYear (); } </script> <head> <body> <div>Date: <input id="date" type="text" value="17. 6. 2005" /></div> <div>Add days: <select id="days" onchange="change()"> <option value="10">10</option> <option value="15">15</option> <option value="30">30</option> </select> </div> <div>Result: <input id="result" type="text" value="27. 6. 2005" readonly="readonly" /></div> </body>
  3. Moc dik za pomoc! Presne jsem si to takhle predstavoval. Akoratze, kdyz zadam 12. 09. 2005 a nastavim 30 dni, tak to vypocte 11. 1. 2005. Zkousel jsem to opravit sam, ale spis jsem to pokazil uplne...
  4. Teraz nemám čas hľadať chybu, ale tipujem, že parseInt v prípade, že číslo začína nulou ho považuje za zapísané v osmičkovej sústave a pri nezmyselných hodnotách vracia nezmysly. Takže skús zmeniť: var day = parseInt (match [1]); var month = parseInt (match [2]); var year = parseInt (match [3]); na: var day = match [1] - 0; var month = match [2] - 0; var year = match [3] - 0; Ak to v tom nebude, tak sa na to neskôr pozriem.
  5. Jojo, chyba byla zde... Uz to funguje 100%. Dokonce to pocita i s prestupnymi roky... :o) Jeste se chci zeptat: Mam XP a po otevreni stranky s timto formularem mi vybehne ta hlaska o aktivnim obsahu nebo co.. Musim dat povolit a pak to teprve funguje. Neslo by tomu nejak zamezit?
  6. http://www.jakpsatweb.cz/faq/sp2-javascript.html
  7. Jeste mala prosbicka: Slo by, aby byl vystup ve formatu DD. MM. YYYY? Ted to pise bez nul na zacatku...
  8. resultInput.value = date.getDate () + ". " + (date.getMonth () + 1) + ". " + date.getFullYear (); prepíš na: resultInput.value = leadingZero (date.getDate ()) + ". " + leadingZero (date.getMonth () + 1) + ". " + date.getFullYear (); a doplň funkciu function leadingZero (number) { return (number < 10? "0": "") + number; }
  9. Dekuji mnohokrat! Uz to chodi dle mych predstav! Jeste bych prosil takove doladeni: Mohl by se nekdo mrknout na http://thomasz.wz.cz/formular/ zdrojovy kod je na http://thomasz.wz.cz/formular/source.rar Policko pro pocatecni datum se jmenuje prijato. Druh pisemnosti je pocet dni. A vysledek je to policko vyridit. Pokud budete datum zadavat z klavesnice, vsechno se deje tak jak ma. Ale pokud k tomu pouzijete kalendarik, ktery vyvolate kliknutim na tu sipku toho prvku select, tak uz to ty dny k vyrizeni nespocita. Potreboval bych aby ta procedura change() se provedla nejen po zadani datu z klavesnice, ale i po vyberu datu z kalendare. Jeste jednou mnohokrat dekuji!

← Zpět na všechna témata