gpt4 book ai didi

javascript - 在 javascript 中合并两个时区感知的日期对象 - 一个用于日期,另一个用于时间

转载 作者:行者123 更新时间:2023-12-02 23:22:42 26 4
gpt4 key购买 nike

假设我在 Javascript 中有以下时区感知 Date 对象:

var date1 = new Date("2019-07-02T07:30:00-05:00");
var date2 = new Date("2020-08-05T00:00:00-05:00");

合并这两者的最佳方法是什么,这样我就可以保留 date1 中的时间和 date2 中的日期,得到:

new Date("2020-08-05T07:30:00-05:00");

我已经尝试过:

date1.setDate(date2.getDate());
date1.setMonth(date2.getMonth());
date1.setYear(date2.getYear());

它为date1正确设置了日期和月份,但在上面的示例输入中,年份被错误地设置为“120”。

最佳答案

一些事情:

  • Date 对象无法识别时区。当传递带有时区偏移量的字符串(如您在此处显示的那样)时,它们使用该偏移量来确定等效的 UTC 时间。最终,Date 对象中存储的唯一内容是与 UTC 时间相对应的数字 Unix 时间戳。您可以使用 .getTime().valueOf() 查看此内容。

  • getDay/setDay 表示一周中的某一天,周六 (0) 到周日 (6)。使用 getDate/setDate 表示该月的日期。

  • getYear/setYear 用于两位数年份(或者更确切地说是当前年份减去 1900),并且永远不应该使用。请改用 getFullYear/SetFullYear

由于第一点,你所要求的是不可能的。或者至少,对于此类字符串中可能遇到的全部值范围是不可能的。相反,您可以直接操作字符串,也可以使用诸如 Luxon 之类的库。或Moment .

我还会更加认真地思考您实际上想要实现的目标。这两个值从哪里来?为什么部分数据很重要而其他数据则被丢弃?如果两个值之间的偏移量不同,您会怎么做?只有您才能回答这些问题。

关于javascript - 在 javascript 中合并两个时区感知的日期对象 - 一个用于日期,另一个用于时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56875783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com