Moment.js 如何区分一个月和一个月的第一天

How to differentiate between a month, and the first day of a month in Moment.js

现在我正在从 CSV 中解析日期,并可以选择添加格式。

有时日期就是日期,会作为时间点来处理。有时日期是片段,描述了一年、一个月等等。这将作为范围处理。

见以下代码:

var a = moment('Jun 2014');
var b = moment('01-06-2014');

//output
a.toDate(); // Sun Jun 01 2014 00:00:00 GMT+0200 (CEST)
b.toDate(); // Sun Jun 01 2014 00:00:00 GMT+0200 (CEST)

我知道缺少的一天将被解释为第 0 天(或第 1 天),但是我在解析日期时有什么方法可以区分 6 月 1 日和 6 月吗?

也许最简单的方法是将日期解析包装在另一个将元数据附加到结果的函数中。这是一个粗略的想法:

function parseDate(d) {
  var ret = moment(d);

  if(d.indexOf('-') === -1) {
    ret.monthOnly = true;
  }

  return ret;
}