如何合并一个日期的日期部分并将其与另一个日期的时间部分合并

How to combine date portion of one date and combine it with time portion of another date

我的 JavaScript 应用程序中有以下日期和时间信息:

"startDate": "2021-05-25T09:50:40.603Z"
"startTime": "2021-05-12T11:52:40.603Z"

我需要实现的是创建一个新变量,该变量仅采用“startDate”的日期部分并将其与“startTime”的时间部分结合起来,即

2021-05-25 + T11:52:40.603Z = 2021-05-25T11:52:40.603Z

我正在考虑使用 date-fns 格式来执行上述拆分,但不确定如何再次组合它,因为我需要确保新组合的日期和时间仍然是上面的 JavaScript 日期对象.

假设您的日期是 ISO 格式并且需要另一个 ISO 日期字符串作为结果:

function start (date, time) {
    return `${date.split("T")[0]}T${time.split("T")[1]}`;
}

console.log(start("2021-05-25T09:50:40.603Z", "2021-05-12T11:52:40.603Z"));

在 ISO 格式中,日期与时间使用字母 T(表示“时间”)分隔。我的函数在那时拆分两个日期。对于日期,我们使用 [0](T 之前),时间是 [1](T 之后)。最后的Z(Zulu)代表Zulu Time,与UTC相同。有关此格式的更多信息,请访问 Wikipedia

在 JavaScript 中存储日期和时间时,我强烈建议使用 UNIX 时间戳,这是一个表示 UNIX 纪元(1970 年 1 月 1 日)开始后过去的毫秒数的数字。这些时间戳可以很容易地转换为大多数编程语言和平台中的日期对象。这是相同的函数,但使用 UNIX 时间戳和 JavaScript 日期对象。

function start (date, time) {
  return new Date(`${new Date(date).toDateString()} ${new Date(time).toTimeString()}`)
}

console.log(start(1621936240603, 1620820360603));
// this function will also recognise strings
console.log(start("25 May 2020", "Feb 13 2019 9:00 AM UTC"));

您可以只使用 Date 对象:

const target = new Date("2021-05-25T09:50:40.603Z")
const startTime = new Date("2021-05-12T11:52:40.603Z")

target.setHours(startTime.getHours())
target.setMinutes(startTime.getMinutes())
target.setSeconds(startTime.getSeconds())
target.setMilliseconds(startTime.getMilliseconds())
console.log(target)

或者通过操纵字符串,您可以这样做:

const startDate = "2021-05-25T09:50:40.603Z";
const startTime = "2021-05-12T11:52:40.603Z";
console.log(`${startDate.substr(0,11)}${startTime.substr(11)}`)