我的日期类似于"星期四2016年01月1日00:00:00 GMT + 0530(IST)"我需要将其作为ISO-8601 utc时间发送到服务器。我尝试过:
moment(mydate).toISOString()
moment.utc(mydate).toISOString()
moment(mydate).utcOffset("+00:00").toISOString()
但我得到的结果如
2016-08-31T18:30:00.000Z
这比我预期的时间晚了一天。那么我该怎样做才能忽略我当地的时区并将其视为UTC?
编辑: 预期的输出是
2016-09-01T18:30:00.000Z
不,初始输入不是字符串而是javascript" new Date()"值。
答案 0 :(得分:2)
发生这种情况的原因: 发生这种情况是因为 .toISOString() 以 UTC 返回时间戳,即使有问题的时刻处于本地模式。这样做是为了与原生 JavaScript Date .toISOString() 的规范保持一致
解决方案:
使用相同的函数并将真值传递给它。这将阻止 UTC 转换。
moment(date).toISOString(true)
const date = new Date("2020-12-17T03:24:00");
const dateISOStringUTC = moment(date).toISOString();
const dateISOString = moment(date).toISOString(true);
console.log("Converted to UTC:" + dateISOStringUTC)
console.log("Actual Date value:" + dateISOString)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
答案 1 :(得分:0)
我今天也遇到了同样的问题,并找到了解决方案。
这是解决方案: moment(date,moment.ISO_8601)
var date = new Date();
console.log("Original Date");
console.log(date);
console.log("After Moment Format");
console.log(moment(date,moment.ISO_8601));
测试执行:
时刻文档:MomentJs