如何在moment js中结合两个时间和日期值

How to combine the two time and day value in moment js

我正在使用 moment js,我正在努力在一个 dateTime 中组合 2 个输入 ,

我有 2 个输入值 -

从 1 号开始,我得到了一天,例如星期一、星期二、星期三..星期六等等..

从 2 日开始,我得到日期时间 2021 年 5 月 26 日星期三 09:20:02 GMT+0530(印度标准时间)

 dayDate  Wednesday
 timeValue  Wed May 26 2021 09:20:02 GMT+0530 (India Standard Time)

我想合并这两个值和一个日期时间,然后需要以毫秒为单位进行转换。

例如,今天是 26,用户从一个输入中选择星期六,从另一个输入中选择时间, 我必须从给定的第二个输入中获取下一个星期六的日期和时间。

我怎样才能做到这一点?

使用startOf('week') and day('Saturday')

说明

timeValue - 2021 年 5 月 26 日,星期三 11:35:27 GMT+0530(印度标准时间)

startOf('week') - 2021 年 5 月 23 日星期日 00:00:00 GMT+0530(印度标准时间)

day('Saturday') - 2021 年 5 月 29 日星期六 00:00:00 GMT+0530(印度标准时间)

const dayDate = "Saturday"
const timeValue = new Date()

console.log(moment(timeValue).startOf('week').day(dayDate).toDate())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js" integrity="sha256-ZsWP0vT+akWmvEMkNYgZrPHKU9Ke8nYBPC3dqONp1mY=" crossorigin="anonymous"></script>

首先,在使用 .day() 设置星期后,使用从时间选择器中获取的日期创建时刻。

要以毫秒为单位转换日期,您可以使用 .format('x')(x 是 Unix 毫秒时间戳)

function calculateDate () {
  const dayDate = "Saturday" // replace with your get element
  const timeValue = document.getElementById("timeValue").value;

  console.log('Complete date: ', moment(timeValue, 'HH:mm').day(dayDate).toDate());
  console.log('In Milliseconds', moment(timeValue, 'HH:mm').day(dayDate).format('x'));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

<input type="time" onchange="calculateDate()" id="timeValue">

如果你从时间选择器中得到一个完整的日期对象,就不需要在时刻构造函数中指定格式,代码将变成moment(timeValue).day(dayDate).format('x')