【发布时间】:2020-12-28 09:07:14
【问题描述】:
我从后端获取 UTC 格式的 created_at 时间戳,我需要在浏览器中呈现。我在 Angular-7 中使用日期管道。在阅读了一些博客和 stackoverflow 之后,我在下面编写了这个函数来获取正常的日期格式,我可以通过日期管道以角度格式传递。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC
- 问题:输出是未来的日期。
- 输入:“22-12-2020 03:44:09 UTC”
- 输出:“2021 年 1 月 22 日星期五 09:14:09 GMT+0530(印度标准时间)”
getDateFromUTC(dateString: string) {
const date = dateString
.split(" ")[0]
.split("-")
.map((number) => parseInt(number));
const hours = dateString
.split(" ")[1]
.split(":")
.map((num) => parseInt(num));
const convertedDate = new Date(
Date.UTC(date[2], date[1], date[0], hours[0], hours[1],hours[2])
);
return convertedDate;
}
getDateFromUTC("22-12-2020 03:44:09 UTC")
我做错了什么?
【问题讨论】:
-
UTC 日期会根据您的浏览器时区自动转换为本地时间(JS Date 对象)。不需要转换。仔细检查后端是否正确返回 UTC。
-
好的。所以我在Angular中使用date pipe将日期格式化为
created_at: {{ time | date:'medium' }}。直接在模板中使用 UTC 值会给出“无效日期”错误。 -
UTC 以“Z”结尾。看起来您的 BE 没有返回标准 ISO UTC。假设值正确,那么应该是:2020-12-22T03:44:09.000Z
-
知道了。这是后端部分的错误。谢谢
标签: javascript angular utc