繁体   English   中英

如何在Javascript日期对象中使用AM PM设置时间

[英]How to set time with AM PM in Javascript Date Object

假设我的DateTime格式为Fri Feb 02 2018 00:00:00 GMT+0530 (IST)

然后从时间选择器插件中以这种格式获取时间1:10am2: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)

这是一个简单的功能,可帮助您完成所需的工作。

它基本上使用正则表达式来划分时间,然后调用setHours和setMins,如果选择pm,则增加12小时。

下面的示例采用当前日期时间,并设置为1:10 am&2:40 pm。

 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); 

似乎您需要自己解析:

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")
);

您可以将时间字符串解析为小时和分钟,根据上午/下午调整小时并将其设置为日期对象,然后:

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时间戳。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM