片刻时间计算错误的日期

时间:2018-01-10 08:42:49

标签: javascript date momentjs timeago

也许是一个简单的问题,但我不明白。

var date = new Date();
test = date.toISOString();
alert(moment(test, "YYYYMMDD").fromNow());

将返回" 16小时",但为什么?

演示:https://jsfiddle.net/5jacaxbf/

1 个答案:

答案 0 :(得分:4)

由于您使用的是moment(String, String),而不是moment(String)toISOString()输出显然是ISO 8601格式的)或moment(Date)

所以moment(test, "YYYYMMDD")将是当天的开始,而不是当前时间。

正如Default部分所述:

  

您可以创建一个仅指定部分单位的时刻对象,其余部分将默认为当前日期,月份或年份,或者0表示小时,分钟,秒和毫秒。

var date = new Date();
test = date.toISOString();
var m1 = moment(test, "YYYYMMDD")
console.log(m1.format());
console.log(m1.fromNow());
var m2 = moment(test)
console.log(m2.format());
console.log(m2.fromNow());
var m3 = moment(date)
console.log(m3.format());
console.log(m3.fromNow());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>