| Autor | Zpráva | ||
|---|---|---|---|
| Dev!l-1415 Profil * |
#1 · Zasláno: 24. 11. 2011, 09:19:55
Ahoj všem,
potřebuju na stránky umístit "hodiny", jak dlouho už stránky fungujou... Můj postup byl takový, že jsem si pomocí fce Date uložil do proměnných 2 datumy, ty od sebe odečetl a výsledek zase pomocí funkcí getFullYear, getMonth, getDate atd. vytáhl zpátky. Problém je, že mi to nezobrazuje korektně. Pokud použiju PHP funkci diff, tak ta mi to zobrazí správně. <script type="text/javascript"> var time_offset = 1000 * <?php echo time(); ?> - (new Date()).getTime(); window.setInterval(function () { var local_time = new Date(); local_time.setTime(local_time.getTime() + time_offset); var start_time = new Date("September 25, 1991 11:00:00"); var diff = new Date(local_time.getTime() - start_time.getTime()); var years,months,days,hours,minutes,seconds,text; years = diff.getFullYear() - 1970; months = diff.getMonth(); days = diff.getDate(); hours = diff.getHours(); minutes = diff.getMinutes(); seconds = diff.getSeconds(); text = years + ' let '; text += months + (months==1 ? ' mesic ': (months>1 && months<5 ? ' mesice ' : ' mesicu; ')); text += days + (days==1 ? ' den ': (days>1 && days<5 ? ' dny ' : ' dni ')); text += hours + ':' + minutes + ':' + seconds; document.getElementById('local-time').innerHTML = text; }, 1000); </script> Dnes mi to ukazuje: 21 let (správně), 2 měsíce (špatně), 2 dny (špatně)... Správně by mělo být: 21 let, 1 měsíc, 30 dni Nevíte někdo, kde by mohla být chyba?? Předem děkuji za každou reakci |
||
| Kajman_ Profil * |
#2 · Zasláno: 24. 11. 2011, 16:47:44
Takhle to nebude fungovat. Zjistěte si rok, měsíc a den ze start_time i z local_time a to porovnávejte.
|
||
| Dev!l-1415 Profil * |
#3 · Zasláno: 24. 11. 2011, 19:36:49
Kajman:
„si rok, měsíc a den ze sta“ Děkuji za reakci... Myslíte to takhle? years = local_time.getFullYear() - start_time.getFullYear(); months = local_time.getMonth() - start_time.getMonth(); days = local_time.getDate() - start_time.getDate(); Nebo jinak? Tímto způsobem to také nefunguje.. :( |
||
| Kajman_ Profil * |
#4 · Zasláno: 24. 11. 2011, 21:23:21
Pokud je days záporné, musíte odečíst z months jedničku a vypočítat dny správně. Poté také zkontrolovat months a pokud jsou záponé, odečíst jeden rok.
|
||
| Dev!l-1415 Profil * |
#5 · Zasláno: 25. 11. 2011, 11:15:53
Děkuji, funguje :))
|
||
|
Časová prodleva: 2 měsíce
|
|||
| Dev!l-1415 Profil * |
#6 · Zasláno: 4. 2. 2012, 11:18:14
Nebudu zakládat nový thread, zeptám se tu, snad mi někdo odpoví... :)
Skript používám již delší dobu, akorát jsem si udělal funkci... Vypadá to nějak takto: function count_time(time_offset, start_time, element) {
var local_time = new Date();
local_time.setTime(local_time.getTime() + time_offset);
var diff = new Date(local_time.getTime() - start_time.getTime());
years = local_time.getFullYear() - start_time.getFullYear();
months = local_time.getMonth() - start_time.getMonth();
days = local_time.getDate() - start_time.getDate();
hours = diff.getHours();
minutes = diff.getMinutes();
seconds = diff.getSeconds();
if (days < 0) {
months = months - 1;
days = local_time.daysInMonth() + days;
}
if (months < 0) {
years = years - 1;
months = 12 + months;
}
text = years + (years==1 ? ' rok ': (years>1 && years<5 ? ' roky ' : ' let '));
text += months + (months==1 ? ' měsíc ': (months>1 && months<5 ? ' měsíce ' : ' měsíců '));
text += days + (days==1 ? ' den ': (days>1 && days<5 ? ' dny ' : ' dní '));
text += hours + ':';
text += (minutes<10 ? ('0' + minutes) : minutes);
text += ':' + (seconds<10 ? ('0' + seconds) : seconds);
document.getElementById(element).innerHTML = text;
}Tuto funkci pak volám takto: var time_offset = 1000 * <?php echo time(); ?> - (new Date()).getTime();
var start_time = new Date("September 25, 1990 11:00:00");
var years,months,days,hours,minutes,seconds,text;
Date.prototype.daysInMonth = function () {
return new Date(this.getFullYear(), this.getMonth(), 0).getDate()
}
window.setInterval(function () {
count_time(time_offset, start_time, 'local-time');
}, 1000);Ale nechápu jednu věc... Pokud je proměnná start_time = March 30, 1999 11:00:00, pak je rozdíl 12 let 10 měsíců 5 dní 2:15:31 Pokud je proměnná start_time = August 08, 2003 11:00:00, pak je rozdíl 8 let 5 měsíců 27 dní 3:15:31 Roky, měsíce, dny, minuty i sekundy sedí, ale proboha proč je tam rozdíl jedné hodiny, když start_time je u obou případů 11:00?? Jakékoliv rady vítám, děkuji |
||
|
Časová prodleva: 2 roky
|
|||
| MiroXX Profil * |
#7 · Zasláno: 5. 10. 2013, 23:45:32
Či tam nie je zapracovaný letný a zimný čas ?
|
||
|
Časová prodleva: 12 let
|
|||
0