【问题标题】:Use Moment to get month of Date object使用 Moment 获取 Date 对象的月份
【发布时间】:2016-11-13 20:37:45
【问题描述】:

我确信这是一件简单的事情,但我无法在任何文档或任何相关帖子中找到具体的语法。

为了让月份选择器工作,我需要在我的控制器初始化时实例化一个新的 Date 对象。

控制器

scope.date = new Date();

这将创建一个具有以下格式的日期对象:

2016 年 2 月 1 日星期一 15:21:43 GMT-0500(东部标准时间)

但是,当我尝试使用时刻从日期对象中提取月份时,出现错误:

在此处输入代码

getMonth 方法

var month = moment().month(scope.date, "ddd MMM DD YYYY");

知道如何在不使用子字符串的情况下从上述日期对象中提取月份吗?

【问题讨论】:

  • moment(scope.date).month()moment(scope.date).format("MMM")

标签: javascript date momentjs


【解决方案1】:

您可以使用moment(scope.date).format("M");

【讨论】:

    【解决方案2】:

    由于moment.month() 返回从零开始的月份编号,您可以使用moment.format() 来获取从 1 开始的实际月份编号,就像这样

    moment.format(scope.date, 'M');

    【讨论】:

      【解决方案3】:

      您可以使用moment.month() 它将返回或设置值。

      moment.month() 是从零开始的,所以它会在执行 get 时返回 0-11,并且在设置传入值时它期望值 0-11。

      var d = moment(scope.date);
      d.month(); // 1
      d.format('ddd MMM DD YYYY'); // 'Mon Feb 01 2016'
      

      【讨论】:

      • 即使我将语句更改为var month = moment().month(scope.date);,我仍然会收到Invalid Date 错误
      • 您不能将moment.month() 设置为0-11 之外的值,否则它将不是有效月份。您正在尝试将整个日期传递给它。只需使用var d = moment(scope.date) 创建日期,然后使用d.month() 访问月份
      猜你喜欢
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 2021-11-21
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多