如何在moment.js中获取之前的确切日期?

时间:2018-05-15 04:58:01

标签: javascript

我需要使用moment.js获取“8月1日”的日期;因为其中没有“先前”的方法,怎么做?

3 个答案:

答案 0 :(得分:2)

据我所知,目前还没有任何内容(尚未)。有一些关于在GitHub issue前后做类似事情的喋喋不休。

所以你可能需要自己做。

去年8月要么是今年,要么是8月之后或去年之前,如果是之前的话。您可以简单地测试它并采取相应的行动。所以去年八月是2017年:

let aug = moment("08-01", "MM-DD")
let lastAug = aug < moment() ? aug : aug.subtract(1, 'years')
console.log("Last August: ", lastAug.format("dddd DD-MM-YYYY"))
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>

然而,去年2月是2018年。

  let feb = moment("02-01", "MM-DD")
  let lastfeb = feb < moment() ? feb : feb.subtract(1, 'years')
  console.log("Last February: ", lastfeb.format("dddd DD-MM-YYYY"))
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>

答案 1 :(得分:1)

你可以使用{j}的subtract()方法

&#13;
&#13;
var now = moment().format("dddd DD-MM-YYYY");
var  previous = moment().subtract(1, 'years').format("dddd DD-MM-YYYY");
     

  document.write(now+"<br/>"+previous);
&#13;
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

下面的代码将找到今年第一个八月。如果当天还没有发生,那么它将返回上一年的第一个八月

&#13;
&#13;
var thisYear = (new Date()).getFullYear();    
var lastAugust = new Date("8/1/" + thisYear);
if(moment() < lastAugust)
    lastAugust = new Date("8/1/" + (thisYear - 1));

var result = moment(lastAugust.valueOf()).format("dddd DD-MM-YYYY");

document.write(result);
&#13;
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
&#13;
&#13;
&#13;