也许是一个简单的问题,但我不明白。
var date = new Date();
test = date.toISOString();
alert(moment(test, "YYYYMMDD").fromNow());
将返回" 16小时",但为什么?
答案 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>