getMonth vs getDate

Trápení při práci s časem/datem v javasriptu

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


JavaScript únor 2018