Nedávno jsem řešil projekt, kdy bylo zapotřebí práce s posunem časů / dnů v javascriptu, následné další úpravy a převody do různých formůtů.
Na začátku jsem si řekl, na co plugin, toto bude jednoduchů jako v jakémkoliv jazyce. Pokud existuje nějaký plugin, zřejmě by mě zbavil několik hodin trápení a hlášek typu "Tohle jako vážně???"
Tak například - funkce getDate() vrací den v měsíci, tedy 1 - 31, co by tedy měla vrátit funkce getMonth()? Ta to projistotu vrací jako 0 - 11. WTF!?
A to se nevyjadřuji k tomu, proč to není getDay()...
Převést objekt typu Date do nějakého formátu = nereálné. Jediná možnost sestavit string s použitím getYear() + '-' + (getMonth() + 1) + '-'...
Některé funkce javascript úplně postrádá, jak třeba zjistit číslo aktuálního týdne v roce?
Nijak, jedině vlastní funkcí...
function getWeekNumber(d) {
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
return [d.getUTCFullYear(), weekNo];
}
Je možné vrátit počet minut nebo hodin ve tvaru "0X"? Není, jedině kontrola < 10 => "0" + ... tfuj!
Jiné opravdu pěkné legrácky se dostane, pokud dáte javascriptu datum ve špatném formátu, sem tam hodí chybu o špatném datu, ale sem tam si například vezme z roku první dvě čísla a vesele je vloží jako by se jednalo o den v nějakém měsíci a roce...
Doporučuji mít vždy při ruce toto:
https://www.w3schools.com/jsref/jsref_obj_date.asp
únor 2018