【发布时间】:2021-09-27 11:22:14
【问题描述】:
我正在使用 PHP Api 女巫给我这个 json:
{
"title": "hemen",
"category": "time",
"start": "2021-09-27T09:22:00+00:00",
"end": "2021-09-27T13:22:00+00:00",
"isAllDay": false,
"calendar": [{"id": 1}],
"body": null
}
问题在于,在我的前端 (Vue) 中,我将开始日期和结束日期转换为日期时间,但它增加了 2 小时,我不知道为什么或修复它的最佳选择。
axios.get('/api/schedules.json').then(function (response) {
let dataOri = response.data;
// convert
dataOri.forEach(element => {
element.start = moment(element.start, "YYYY-MM-DDTHH:mm:ssZ").format("YYYY-MM-DD HH:mm:ss");
console.log(element.start); // prints '2021-09-27 11:22:00' instead of '2021-09-27 09:22:00'
element.end = moment(element.end, "YYYY-MM-DDTHH:mm:ssZ").format("YYYY-MM-DD HH:mm:ss");
console.log(element.end); // prints '2021-09-27 15:22:00' instead of '2021-09-27 13:22:00'
});
self.filterSchedules = dataOri;
});
【问题讨论】:
-
这很可能是因为时区。如果您查看
YYYY-MM-DDTHH:mm:ssZ的格式,您将在最后添加“Z”。这指定时间为 UTC,例如 mentioned here,并且您将其格式化为本地(不带“Z”)。 -
@Tatranskymedved — 初始时间是 UTC。解析格式中的“Z”标记表示“偏移为 +HH:mm”,并不表示 UTC(参见 moment.js display section)。偏移量是 +00:00,实际上是 UTC。
-
啊,对不起,你是对的,我说错了。无法编辑评论,将更新答案以反映这一点。
标签: javascript datetime momentjs