我想计算UTC时间的相对时间。我当地的时间是+2。
我尝试了很多组合...... 例如
const endDate = new Date("08 Jun 2018") // tomorrow's date, I am expecting the time is 00:00:00
const utcDateTime = new Date(moment.utc().format());
const format = 'YYYY-MM-DD HH:mm:ss';
console.log(moment(endDate).fromNow()) // example for Poland(+2) it is 12, but I want to UTC(0), so it is should be 14
console.log(moment(endDate).from(utcDateTime)) // the same
console.log(moment(endDate.toUTCString()).from(utcDateTime)) // the same
console.log(moment(moment(endDate).utc().format(format), format).fromNow()) // I do not why, but it is 10, not 14
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>
每次我都得到相对时间,这对我当地时间来说是正确的。 UTC应该大2小时。
我不知道该怎么做......
有人可以帮助我吗?
谢谢!
修改
基于@ 31piy的建议,我尝试过这样的事情。
const endDate = new Date("08 Jun 2018") // tomorrow's date, I am expecting the time is 00:00:00
const format = 'YYYY-MM-DD HH:mm:ss';
console.log(moment(endDate).from(moment(moment.utc().format(format), format)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>
这对我有用,但是......我怎么能更清楚地做到这一点?有可能吗?
EDIT2
这是我的错...我在UTC时区中将日期(“2018年6月8日”)传递给Date构造函数,但我没有指定它是UTC - 所以实际上,endDate应该相等到"08 June 2018 02:00:00"
,而不是"08 Jun 2018 00:00:00"
。我解决了这个问题,非常明确moment(endDate).fromNow(true)
对我有用。
感谢您帮助我!
答案 0 :(得分:1)
你想要实现的目标有点棘手。您需要在没有时区信息的情况下格式化UTC时间,然后再次使用它解析它,然后再调用fromNow()
:
const format = 'YYYY-MM-DD HH:mm:ss';
console.log(moment(moment.utc().format(format), format).fromNow());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js
"></script>
答案 1 :(得分:0)
这是我的错...我在UTC时区中将日期(“2018年6月8日”)传递给Date构造函数,但我没有指定它是UTC - 所以实际上,endDate应该相等到"08 June 2018 02:00:00"
,而不是"08 Jun 2018 00:00:00"
。我解决了这个问题,非常明确moment(endDate).fromNow(true)
对我有用。
答案 2 :(得分:0)
不要使用Date
构造函数进行解析。你已经在使用Moment,所以只需让它工作。
moment.utc("08 Jun 2018", "DD MMM YYYY").fromNow()