【问题标题】:.day() returns wrong day of month with Moment.js.day() 使用 Moment.js 返回错误的日期
【发布时间】:2015-04-01 17:31:38
【问题描述】:

我正在使用 Moment.js 解析字符串并分别获取日、月和年:

var date = moment("12-25-1995", "MM-DD-YYYY");
var day = date.day();        

但是,day 不是 25,而是 1。正确的 API 方法是什么?

【问题讨论】:

    标签: javascript datetime momentjs


    【解决方案1】:

    正确使用的函数是.date():

    date.date() === 25;
    

    .day() 为您提供星期几。这与 date object 上的 javascript 的 .getDate().getDay() 函数类似。

    如果要获取月份和年份,可以使用.month().year()函数。

    【讨论】:

    • date.month() 返回 11 而不是 12。它总是返回 -1 输入的月份。
    • @YaronLevi 是的,它的索引为零。它在the documentation 中谈到了这一点。 javascript 日期对象也这样做。
    • 哇,这令人困惑。他们应该只让“day”代表一天,然后为“dayOfMonth”单独设置一个。
    【解决方案2】:

    这是获取部分日期的方法:

    var date = moment("12-25-1995", "MM-DD-YYYY");
    
    if (date.isValid()) {
    
        day = date.date(); 
        console.log('day ' + day);
    
        month = date.month() + 1;
        console.log('month ' + month);
    
        year = date.year(); 
        console.log('year '+ urlDateMoment.year());
    
    } else {
        console.log('Date is not valid! ');
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用moment().format('DD') 获取月份中的日期。

      var date = +moment("12-25-1995", "MM-DD-YYYY").format('DD'); 
      // notice the `+` which will convert 
      // the returned string to a number.
      

      祝你好运……

      【讨论】:

        猜你喜欢
        • 2013-11-08
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 2015-12-14
        • 1970-01-01
        • 1970-01-01
        • 2020-01-22
        相关资源
        最近更新 更多