5 ms·
Months in Luxon are 1-indexed instead of 0-indexed like in Moment and the native Date type. This seems like a bold decision and terrifying source of errors for
by bshimmin 9y ago
Months in Luxon are 1-indexed instead of 0-indexed like in Moment and the native Date type.
This seems like a bold decision and terrifying source of errors for those of us with decades of experience thinking January is 0.
- hectorlorenzo 9y agoI think that moment.js was already built that way. For me it kinda makes sense: if days are calculated with a 1-index in mind, why make months different? As I said: it KINDA makes sense.
- icambron 9y agoNo, they're 0-indexed in Moment. But yes, the reason I made Luxon 1-index them is that days and years are 1-indexed. I also fielded a lot of issues in Moment that were caused by newer programmers not knowing that months were 0-indexed.
- hectorlorenzo 9y agoGood stuff.
- frutiger 9y agoI'm not defending the difference between how months and days/years are treated. But here are some possible reasons. From ctime(3): Broken-down time is stored in the structure tm, which is defined in <time.h> as follows: struct tm { int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ int tm_wday; /* Day of the week (0-6, Sunday = 0) */ int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst; /* Daylight saving time */ }; Also, it allows you to do things like ["JAN", "FEB", ..., "DEC"][theDate.month]
- semi-extrinsic 9y agoWell, nobody is confused when their digital watch reads "00:00:00" as the ball drops on New Years Eve. But if the date was 2018-00-01 people would be like "WTF??"
- Gaelan 9y agoOTOH, as somebody who doesn't do much date stuff JS/moment's months are a constant source of bugs.
- edoceo 9y agoISO 8601 say January is 01
- tomjakubowski 9y agoJeez, to think I've been using base 10 this whole time!
- dwg 9y agoAs explained on the website, that's why this is Luxon and not moment 3.0. It's a great approach for them to take that allows them to experiment, grow, and relieve the pressure from calls for change, without disrupting the existing community.
- tobyhinloopen 9y agoNo, Javascript is the terrifying source of errors here.
- alphaalpha101 9y agoMonths should always be 1-indexed. Years are, days are, why not months?