获取月份的第一天而不更改Moment对象

时间:2016-06-20 17:10:01

标签: javascript date momentjs

我想获得一个月的第一天,然后使用Moment日期对象做其他事情,但是当我做的时候会发生什么

moment().startOf('month').day()

它将当前对象的日期更改为月份的第一天,而不是简单地将其读取

var m = moment()
m.format('D') // 20
m.startOf('month').day()
m.format('D') // 1

我可以只在第一天阅读,而不更改时刻对象吗?

1 个答案:

答案 0 :(得分:2)

  

我可以只在第一天阅读,而不更改时刻对象吗?

我认为你不能,但你可以先克隆它。因此,假设m是一个Moment对象,您不想更改:

    m.clone().startOf('month').day();
//   ^^^^^^^^

示例:

var m = moment("2016-06-20", "YYYY-MM-DD");
console.log(m.format("dddd Do"));                          // Monday 20th
console.log(m.clone().startOf('month').format("dddd Do")); // Wednesday 1st
// ----------^^^^^^^^
console.log(m.format("dddd Do"));                          // Monday 20th
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>