[英]How to set time with AM PM in Javascript Date Object
假設我的DateTime格式為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)
這是一個簡單的功能,可幫助您完成所需的工作。
它基本上使用正則表達式來划分時間,然后調用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.