首页 > 解决方案 > 在 javascript 中将时间添加到当前日期或键入脚本

问题描述

我正在尝试将时间添加到当前日期。

例子:

我有这个时间:05:17 am

我想通过此时替换当前时间来添加这个时间当前日期。

如果当前日期和时间是:10-09-2021 11:30 am

我想添加当前日期并用我的特定时间替换时间=>输出例如上面:10-09-2021 05:17 am

我在尝试:

var time = this.timeInput;
new Date().getTime() + convertTimeToInt(time);

// in this case we add current time to my input time, i don't want this.

convertTimeToInt()是将时间转换为 int 的方法。

任何想法?

标签: javascriptdatedatetime

解决方案


这会做

let time = '05:17 pm';
let splittedTime = time.split(' ');
let [hours, minutes] = splittedTime[0].split(':');
let isAm = splittedTime[1] === 'am'; // in europe we don't use am, the hours goes from 0 to 24

var date = new Date(); // now
console.log('before ' + date); 

let hourToAdd = 0;
if(+hours === 12) {
    if(isAm) {
        hourToAdd = - 12; // at midnight we dont add +12 nor +0, we want 12am to be 0 hours
    } else {
        hourToAdd = 0;
    }
} else {
    hourToAdd = isAm ? 0 : 12;
}

// use setHours to set time
date.setHours(+hours + hourToAdd, +minutes, 0, 0); 
console.log('after ' + date);  

输出:

let time = '12:17 pm';
[LOG]: "before Fri Sep 10 2021 14:37:07 GMT+0200
[LOG]: "after Fri Sep 10 2021 12:17:00 GMT+0200

let time = '12:17 am';
[LOG]: "before Fri Sep 10 2021 14:37:27 GMT+0200
[LOG]: "after Fri Sep 10 2021 00:17:00 GMT+0200

let time = '05:17 am';
[LOG]: "before Fri Sep 10 2021 14:37:45 GMT+0200
[LOG]: "after Fri Sep 10 2021 05:17:00 GMT+0200

let time = '05:17 pm';
[LOG]: "before Fri Sep 10 2021 14:38:21 GMT+0200
[LOG]: "after Fri Sep 10 2021 17:17:00 GMT+0200

更新:没有上午/下午,你可以使用

let time = '05:17';
let [hours, minutes] = time.split(':');
var date = new Date(); // now
console.log('before ' + date); 
date.setHours(+hours, +minutes, 0, 0); // set hours/minute
console.log('after ' + date); 

输出:

[LOG]: "before Fri Sep 10 2021 11:03:07 GMT+0200 
[LOG]: "after Fri Sep 10 2021 05:17:00 GMT+0200 

推荐阅读