【问题标题】:MomentJS returns obscure date for 1st of monthMomentJS 返回每月 1 日的模糊日期
【发布时间】:2015-09-21 10:48:19
【问题描述】:

我在 MomentJS 返回一个无意义的日期时遇到了一个小问题。我正在尝试将日期设置为给定月份和年份的第一天。我尝试了以下方法:-

var _year = 2015;
var _month = 10;
var _dateString = _year.toString() + '-' + _month.toString() + '-1';
var _date = moment(_dateString, 'YYYY-MM-D');
console.log('_date', _date.format('dddd, do MMMM YYYY'));

这使Thursday, 4th October 2015 成为_date。哪个不存在。我尝试使用.set().date(),都给出了相同的结果:-

var _date = moment(_dateString, 'YYYY-MM-D').set('date', 1);
> Thursday, 4th October 2015

var _date = moment(_dateString, 'YYYY-MM-D').date(1);
> Thursday, 4th October 2015

所以,我现在看不出我做错了什么,有人可以提供任何建议或帮助吗?

非常感谢。

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:

    你的代码是正确的,除了你应该在do中使用大写D而不是小d

    console.log('_date', _date.format('dddd, Do MMMM YYYY'));
    

    Dodo 之间的区别是:

    • do 是一周中的一天的索引,例如,如果您查看日历,您会发现 10 月 1 日是星期四,这是一周的第四天,因为索引从 0 开始,如果您更改为 10 月 2 日,即星期五,它会给你 5 日,10 月 3 日 => 6 日也是如此,然后新的一周从星期日开始,然后是 10 月 4 日 => 0 日,然后重新开始。

    • Do 是当月的一天的索引,即您期望的结果,10 月 1 日是 1 日,10 月 2 日 => 2 日,依此类推。

    在此处查看docs 了解更多信息

    【讨论】:

    • 请注意,您的 Dodo 在您的示例中是错误的方式。
    • 感谢@dooburt 已修复 :)
    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多