使用javascript/jquery以12小时格式添加小时数

使用javascript/jquery以12小时格式添加小时数,javascript,jquery,Javascript,Jquery,如何使用javascript/jquery将小时添加到12小时格式的时间, 示例:在上午12:00添加2小时,则结果应为凌晨2:00 在晚上9:00加上8小时,结果应该是早上5:00 函数格式时间(日期){ 变量meridiem='AM', 小时; //加上时间 date.setHours(date.getHours()+2); 小时=date.getHours(); 如果(小时数>=12){ 梅里迪姆=‘PM’; 小时数=小时数%2; } 小时=(小时===0)?12:小时; 返回format

如何使用javascript/jquery将小时添加到12小时格式的时间, 示例:在上午12:00添加2小时,则结果应为凌晨2:00 在晚上9:00加上8小时,结果应该是早上5:00
函数格式时间(日期){
变量meridiem='AM',
小时;
//加上时间
date.setHours(date.getHours()+2);
小时=date.getHours();
如果(小时数>=12){
梅里迪姆=‘PM’;
小时数=小时数%2;
}
小时=(小时===0)?12:小时;
返回formatNumber(hours)+':'+formatNumber(date.getMinutes())+''+meridiem;
}
函数formatNumber(数字){
返回('0'+数字).slice(-2);
}

警报(格式时间(新日期())以下函数采用表示时间的字符串和表示要添加到该时间的小时数的整数。您也可以选择传递整数分钟数。结果是一个格式为“h:mmxm”的字符串

函数addTimeToString(timeString,addHours,addMinutes){
//第三个参数是可选的。
如果(addMinutes==未定义){
addMinutes=0;
}
//分析时间字符串。提取小时、分钟和am/pm。
变量匹配=/(\d+):(\d+)\s+(\w+)/.exec(时间串),
小时=parseInt(匹配[1],10)%12,
分钟=parseInt(匹配[2],10),
修饰符=匹配[3]。toLowerCase();
//将给定的时间转换为分钟。添加所需的数量。
if(修饰符[0]=='p'){
小时数+=12;
}
var newMinutes=(小时+增加小时)*60+分钟+增加分钟,
新小时=数学楼层(新分钟/60)%24;
//现在找出新日期字符串的组成部分。
新分钟%=60;
var newModifier=(newHours<12?'AM':'PM'),
小时数12=(新小时数<12?新小时数:新小时数%12);
如果(小时12==0){
12小时=12小时;
}
//把它粘在一起。
var minuteString=(newMinutes>=10?“”:“0”)+newMinutes;
返回时数12+':'+minuteString+''+newModifier;
}
功能测试(时间串、添加小时、添加分钟){
document.write(timeString++'+'+addHours++'h'+
(添加分钟数| | 0)+“m&rarr;”+
addTimeToString(timeString,addHours,addMinutes)+'
'; } 测试('11:30 AM',1:45); 测试('下午9:00',4); 测试('11:55 PM',0,5);//五分钟后将是午夜12点。 测试('12:00am',0,5);//午夜后五分钟:上午12:05。 测试('11:55 AM',0,5);//再过五分钟就是中午12点了。
测试('12:00pm',0,5);//中午后五分钟:12:05 pm。
我在Date原型类中添加了几个方法

//完整的解决方案
Date.createDateFromTime=函数(小时,分钟){
变量日期=新日期();
日期设置时间(小时、分钟);
返回日期;
}
Date.prototype.setTime=功能(小时,分钟){
这是设定时间(小时);
此.setMinutes(分钟);
返回这个.displayTime();
}
Date.prototype.displayTime=函数(){
函数addZero(数字){
如果(数字<10){
返回“0”+number.toString();
}否则{
返回编号.toString();
}
}
var hours=this.getHours();
var minutes=this.getMinutes();
var am_pm=“am”;
如果(小时数>=12){
am_pm=“pm”
小时数-=12;
}
如果(小时=0)小时=12;
小时=加零(小时);
分钟=加零(分钟);
返回时间+“:“+分钟+”+上午/下午;
}
Date.prototype.addHours=功能(小时){
this.setHours(this.getHours()+小时);
返回这个.getHours();
}
//例子
date=date.createDateFromTime(19,20);
console.log(date.displayTime());//“晚上7:20”
日期:增加小时数(4);
console.log(date.displayTime());//“晚上11:20”
日期:增加小时数(5);

console.log(date.displayTime());//“04:20 AM”
您已经尝试了什么?您需要编写一些代码来实现它。它在JavaScriptAdded中不是开箱即用的示例代码如下:)它取决于您在晚上11点增加2小时时想要得到什么。如果您需要将其滚动到下一个日期,则必须将原始时间转换为日期对象,添加2小时,然后转换回字符串。对于填充0,您还可以使用
('0'+数字)。切片(-2)
@Dinesh谢谢:)我已更改:)此代码仅取决于当前时间,正如我所提到的,我希望它取决于用户想要的时间,并根据它获取时间。@phpboy当前我将当前时间作为函数参数传递。传递用户想要的时间作为参数,而不是你有一个轻微的错误:根据这个函数,上午12:00将得到下一个小时下午1点,这是错误的。时间从上午12:00到上午11:00,然后改为下午12:00到晚上11:00。因此,您的代码应该更改为:
if(hours=='12'&&modifier[0]=='a'){hours=24;}否则if(modifier[0]=='p'&&hours<12){hours+=12;}
感谢您指出了这个错误。它可以通过取12的小时数进行修正:
hours=parseInt(匹配[1],10)%12
。传统的时间符号有一个有趣的怪癖,十二实际上意味着零。