在 JavaScript 中使用来自一个的日期和来自另一个的时间将时刻日期时间对象连接成一个(反应)

Concatenate moment datetime objects into one using date from one and time from another in JavaScript (React)

我有两个 Moment DateTime 对象,分别称为 'date' 和 'time',每个对象都从 Ant Design 库的输入字段接收它们的值。我想从一个对象中获取日期,从另一个对象中获取时间,然后将它们合并到一个 DateTime 对象中。

我已经尝试过如下操作:

moment(date?.get('year') + '-' + date?.get('month') + '-' + date?.get('date') + 'T' + time?.get('hour') + ':' + time?.get('minute')+':00.000Z') //this does not result in a DateTime object

moment(date?.toDate(), time.toTime()) //this was a bit of an experiment. toDate works, but toTime not

我发现了类似的问题,但在这些情况下,他们使用的是字符串数据而不是 DateTime 对象,例如:

我当然可以按照这个例子生成一个字符串,这与我在上面的例子中所做的基本相似。

不过,我觉得我可能把事情复杂化了。有没有简单的方法可以做到这一点?

任何建议将不胜感激

因为datetimeMoment对象,你可以用time的值设置date的小时和分钟。然后,toDate() 给你 Javascript DateTime 对象。我想不出更短的方法。

const date = moment("2021-10-19", "YYYY-MM-DD"); // date parts, be careful about timezone
const time = moment("10:00", "HH-mm"); // time parts, may be extended with seconds, milliseconds

// Assuming that date or time can be null or undefined below

console.log(date?.format());
console.log(time?.format());

// Let's add hour and minute of time to date

date?.hour(time ? time.hours() : date.hours()).minute(time ? time.minutes() : date.minutes());

console.log(date?.format()); // time of date is set

console.log(date?.toDate()); // Javascript DateTime object
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>