javascript - UTC时间的时刻Js
问题描述
我想计算与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>
它对我有用,但是......我怎样才能更清楚地做到这一点?可能吗?
编辑2
这是我的错......我将一个位于 UTC 时区的日期(“2018 年 6 月 8 日”)传递给 Date 构造函数,但我没有指定它是 UTC - 所以事实上,endDate 应该等于"08 June 2018 02:00:00"
,而不是"08 Jun 2018 00:00:00"
. 我解决了这个问题,非常清楚moment(endDate).fromNow(true)
对我有用。
感谢您帮助我!
解决方案
你想要达到的目标有点棘手。您需要在没有时区信息的情况下格式化 UTC 时间,然后在调用它之前再次使用 moment 解析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>
推荐阅读
- facebook - 在 html 中预先创建一个 facebook 帖子并提交
- python - 在哪里保存长硬编码数据以在 Django 中进行初始迁移?
- python - SUMO 和 TraCI,多个客户端 - 一个连接
- javascript - Vue js在编译时正在删除脚本标签
- powershell - 对包含给定短语的字符串应用过滤器并返回之后发生的所有内容
- javascript - 根据另一个单词数组对一组单词进行排序
- c# - CodeDOM:命名参数
- node.js - node.js @sendgrid/mail 错误:未经授权
- kubernetes - kube-apiserver healthz 调用中检查了什么?
- css - 当我知道值不是空白时,Asp.net 参数显示为空