簡體   English   中英

moment.js 連接日期和時間

[英]moment.js concatenate date and time

我在一個表單中有四個字段,一些包含初始日期和結束日期 (dd / mm / yyyy),其他包含開始時間和結束時間 (hh: ss)。

我用來通過 moment.js 獲取日期和時間的這些字段的值,例如:

initialdate = moment( $('input#start_date').val(), 'DD/MM/YYYY' );
start_time = moment( $('input#start_time').val(), 'HH:mm');
enddate = moment( $('input#enddate').val(), 'DD/MM/YYYY' );
end_time = moment( $('input#end_time').val(), 'HH:mm');

我打算然后獲得兩個日期之間的秒差,連接開始日期和時間以及結束日期和時間。 我試圖這樣做,但無濟於事:

start = initialdate + start_time;
end = enddate + end_time;
tracker = moment.duration( end.diff(start) ).asSeconds();

連接日期和時間字符串並將它們解析為一個,例如

 var date = '23/02/2017'; var time = '15:42'; var dateTime = moment(date + ' ' + time, 'DD/MM/YYYY HH:mm'); console.log(dateTime.format('YYYY-MM-DD HH:mm'))
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>

失敗是嘗試連接值,使用以下內容進行測試:

let initialdate = '2016-10-01';
let start_time = '19:04:10';
let enddate = '2016-10-01';
let end_time = '19:04:20';

let datetimeA = moment(initialdate + " " + start_time);
let datetimeB = moment(enddate + " " + end_time);

console.log(datetimeA.format());
console.log(datetimeB.format());

let datetimeC = datetimeB.diff(datetimeA, 'seconds');

console.log(datetimeC);

[2021] 最優雅的解決方案是:

/* `date` and `time` are instances of Moment */

    date = date.set({
          hour: time.get('hour'),
          minute: time.get('minute'),
          second: 0,
          millisecond: 0,
        });

一個更清潔的解決方案 IMO 是使用時刻的hourminute getter 和 setter。

let a = moment()
let b = moment().add(3, 'hour').add(37, 'minute') //b is the time portion
a.hour(b.hour()).minute(b.minute())

只需使用此功能

function getCombinedDateObject(date, time) {
let calculatedDateString = '';
if (date && time) {
  let utcDate = moment.utc(date);
  let utcTime = moment.utc(time);
  calculatedDateString = moment(`${utcDate.format('YYYY-MM-DD')} ${utcTime.format("HH:mm:ss z")}`);
}
let finalDateTime = new Date(calculatedDateString);
if (isNaN(finalDateTime.getTime()))
  return null;
else
  return finalDateTime;
}

我的答案很簡單,我只是將日期時間更改如下:

const date = new Date(myDate)
const time = new Date(myTime)
date.setHours(time.getHours())
date.setMinutes(time.getMinutes())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM