moment('201206130139', 'YYYYMMDDHHmm')
worked... i was using MM
because i haven't had enough coffee
moment('2024-12').endOf('month').format('W')
moment('2024-12').endOf('month').add(-12, 'hours').format('W')
Both of these result to 1. Why? It must be something like 52.
require('moment')
while the test used require('moment-timezone')
moment().tz('Europe/Oslo').add(1, 'year').month(2).endOf('month')
.weekday(0)
The docs say the following:
Note: if you chain multiple actions to construct a date, you should start from a year, then a month, then a day etc. Otherwise you may get unexpected results, like when day=31 and current month has only 30 days (the same applies to native JavaScript Date manipulation), the returned date will be the 30th of the current month (see month for more details).
Bad: moment().date(day).month(month).year(year)
Good: moment().year(year).month(month).date(day)
Based on that information I would expect:moment().year(2018).month(3).date(31).format()
To print: "2018-04-30T13:20:40-04:00”
But instead it prints: "2018-05-01T13:20:40-04:00”
Why?
.isAfter()
method that I'd like to confirm is unexpected before I make a bug report. It looks like the comparison with day-granularity (moment1.isAfter(moment2, 'day')
) depends upon the locale of moment1
to determine if the day number is equal.
moment(new Date('2018-07-03T03:00:00.000Z')).isAfter(new Date('2018-07-03T00:00:00.000Z'), 'day') //false
moment(new Date('2018-07-03T04:00:00.000Z')).utc().isAfter(new Date('2018-07-03T00:00:00.000Z'), 'day') //false