假设我以这种格式Fri Feb 02 2018 00:00:00 GMT+0530 (IST)
从时间选择器插件获取此格式的时间1:10am
或2:30pm
。
我不知道如何计算和组合/添加它们以产生这个结果:
Fri Feb 02 2018 01:10:00 GMT+0530 (IST)
或Fri Feb 02 2018 14:30:00 GMT+0530 (IST)
我希望有一件事可以做到这么简单:
new Date(dateString).setHours(1:10am)
答案 0 :(得分:1)
这是一个简单的功能,可以完成你的工作。
它基本上使用正则表达式来分割时间,然后调用setHours& setMins,如果选择pm,则添加12小时。
以下示例采用当前日期时间,并设置为1:10 am&下午2点四十○..
function setHours(dt, h) {
var s = /(\d+):(\d+)(.+)/.exec(h);
dt.setHours(s[3] === "pm" ?
12 + parseInt(s[1], 10) :
parseInt(s[1], 10));
dt.setMinutes(parseInt(s[2],10));
}
var d = new Date();
console.log(d);
setHours(d, "1:10am");
console.log(d);
setHours(d, "2:40pm");
console.log(d);
答案 1 :(得分:1)
好像你需要自己解析它:
function parseDaytime(time) {
let [hours, minutes] = time.substr(0, time.length -2).split(":").map(Number);
if (time.includes("pm") && hours !== 12) hours += 12;
return 1000/*ms*/ * 60/*s*/ * (hours * 60 + minutes);
}
将其添加到日期:
new Date(
+new Date("Fri Feb 02 2018 00:00:00 GMT+0530")
+parseDaytime("1:20pm")
);
答案 2 :(得分:1)
您可以将时间字符串解析为小时&分钟,根据上午/下午调整小时数。然后将其设置为日期对象:
var dateString = 'Fri Feb 02 2018 00:00:00 GMT+0530 (IST)';
var hoursString = '2:30pm';
var parts = hoursString.replace(/am|pm/, '').split(':')
var hours = parseInt(parts[0]) + (hoursString.indexOf('pm') !== -1 ? 12 : 0);
var minutes = parts[1];
var date = new Date(dateString);
date.setUTCHours(hours, minutes);
console.log(date); // in your local time
console.log(date.toUTCString()); // in UTC (i.e. without timezone offset)
(注意setHours / setUTCHours会改变日期对象,但会返回更新日期时间的unix时间戳。)