如何解决在打字稿中创建 UTC 日期
我目前正试图强制我的应用程序使用 UTC 时间,无论系统时间是什么。我有一种创建日期的方法:
public static createDate(date: Date = new Date()): Date {
return new Date(
Date.UTC(
date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDay(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),date.getUTCMilliseconds()
)
);
}
但是,当它进入数据库时,我得到了提前 8 小时的时间。我不确定这里发生了什么。
我曾尝试使用其他解决堆栈溢出的解决方案,使用诸如 moment 和 date-fns 之类的库,但我没有任何运气。
解决方法
Date
对象在 UTC 中已经。它总是如此,因为它内部存储的唯一值是基于 UTC 的数字时间戳,表示自 1970-01-01 00:00:00.000 UTC 以来的毫秒数。您可以直接使用 .getTime()
或 .valueOf()
或通过将 Date
对象强制为 Number
的任何机制来查看该时间戳。您还可以使用 .toISOString()
来查看它的字符串表示。
您在问题中演示的方法只是复制 Date
对象的漫长而缓慢的方法。使用 new Date(date)
会得到相同的结果。
您说数据库中的时间偏移有问题,但您没有显示该部分代码或描述有关您的数据库的任何内容,因此我无法直接回答。您可能在如何将 Date
对象传递到正在转换为本地时间的数据库中遇到了细微的错误。
我意识到因为我在电脑上手动设置了时间,它使用了不同的时区,所以它返回了不同的时间。现在好像没事了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。