NetAcademia

A legjobbakat tanítjuk!

Mikor jön a Mikulás?

2016. november 22. 22:25 - Fóti Marcell

Január 7-én!

Mi a hiba az alábbi kódban, ha Mikulás napját akarom bevinni egy JavaScript-változóba?
 
var Mikulas_napja=new Date(2016, 12, 6);
 
Na, kipróbálja valaki? Nem? Íme az eredmény:
 
2017 :-o január :-o 6!
 
Mi a fene? Nem azt írtuk be, hogy 2016, azaz IDÉN? És nem azt írtuk be, hogy 12. hó, azaz DECEMBER? Még jó, hogy a hatodikát megtartotta! Mi ez?
 
Ez egy őskövület. A "hiba" oka, hogy a JavaScript, a JAVA és még sok más nyelv a C-nyelv gyermeke, abban pedig a '70-es években úgy írták meg a kódot (time.h), hogy a Date() függvény második, azaz MÁSODIK paramétere 0-tól számozódik, tehát a 0 a január, a 11 a december, a 12 pedig - a következő év januárja!
 
Na de miért? Mi ennek az értelme? Hisz a napok meg 1-től számozódnak, a vak is látja!
 
Ennek az az oka, hogy a hónapoknak neveik vannak. Gyakorlatilag sohasem írjuk ki úgy, hogy "ötös hónap", hanem azt írjuk, "május". A hónapok nevei tipikusan egy tömbben vannak, ['Január', 'Február', ... 'December'], amiket C-alapú nyelvekben nullától induló indexekkel címzünk. A nullától kezdődő hónapokkal tehát változtatás nélkül lehet egy tömbből a megfelelő hónapneveket előkapni, 0-tól 11-ig.
 
A hónap napjainak viszont nincs nevük. Hatodika az hatodika. Nem címzünk vele semmit, értelmetlen lenne 6 helyett 5-öt tárolni, aztán úgy kiírni, hogy 5+1.
 
Ezek a régi öregek nagyon furfangos fickók voltak!
Szólj hozzá!

A bejegyzés trackback címe:

https://netacademia.blog.hu/api/trackback/id/tr411991952

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.