Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新日期()12/24小时格式JavaScript?_Javascript_Date - Fatal编程技术网

新日期()12/24小时格式JavaScript?

新日期()12/24小时格式JavaScript?,javascript,date,Javascript,Date,我有一个简单的验证,可以防止输入/输出错误值的时间。例如,如果用户选择: 12:30 PM=时间进入和12:15 PM=超时 他们将在屏幕上看到信息“超时不能小于或等于时间输入” 我的验证工作正常,但有一个例子。例如,用户选择: 进入时间:下午12:30和退出时间:下午1:00 他们单击保存并弹出警告消息。我发现我的代码生成了如下内容: Time In: Thu Sep 15 2016 00:29:00 GMT-0500 (Central Standard Time)Time Out: Wed

我有一个简单的验证,可以防止输入/输出错误值的时间。例如,如果用户选择:

12:30 PM=时间进入
12:15 PM=超时

他们将在屏幕上看到信息“超时不能小于或等于时间输入”

我的验证工作正常,但有一个例子。例如,用户选择:

进入时间:下午12:30
退出时间:下午1:00

他们单击保存并弹出警告消息。我发现我的代码生成了如下内容:

Time In: Thu Sep 15 2016 00:29:00 GMT-0500 (Central Standard Time)Time Out: Wed Sep 14 2016 13:29:00 GMT-0500 (Central Standard Time)
我使用JavaScript为Time-In和Time-out值创建新的日期。看起来我的代码在
new Date()
中设置了12个下午的00。所以我的问题是如何防止这种情况,或者JavaScript中是否有其他方法来解决这个问题。这是我的代码,在转换为新日期()时,我将输入两个值:


只需从以下位置更改您的状况:

defaultAMPMOut/In==“PM”

defaultAMPMOut/In==“PM”和&defaultHourOut/In!=11//或12取决于它是从0还是1开始

如果它是12,那么它仍然会在不应该的时候加上12,将其滚动到0

编辑:

如果是凌晨12点,你还必须减去12小时,所以是0

if (defaultAMPMIn == "PM" && defaultHourIn != 12) {
  defaultHourIn += 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMOut == "PM" && defaultHourOut != 12) {
  defaultHourOut += 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMOut == "AM" && defaultHourOut == 12) {
  defaultHourOut -= 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMIn == "AM" && defaultHourIn == 12) {
  defaultHourIn -= 12; //hours are in 24-hour format (0-23)
}

只需从以下位置更改您的状况:

defaultAMPMOut/In==“PM”

defaultAMPMOut/In==“PM”和&defaultHourOut/In!=11//或12取决于它是从0还是1开始

如果它是12,那么它仍然会在不应该的时候加上12,将其滚动到0

编辑:

如果是凌晨12点,你还必须减去12小时,所以是0

if (defaultAMPMIn == "PM" && defaultHourIn != 12) {
  defaultHourIn += 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMOut == "PM" && defaultHourOut != 12) {
  defaultHourOut += 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMOut == "AM" && defaultHourOut == 12) {
  defaultHourOut -= 12; //hours are in 24-hour format (0-23)
}

if (defaultAMPMIn == "AM" && defaultHourIn == 12) {
  defaultHourIn -= 12; //hours are in 24-hour format (0-23)
}
试试这个

  // Your Code
    if (defaultAMPMIn == "PM" && defaultHourIn >12) {
                defaultHourIn += 12;//hours are in 24-hour format (0-23)
            }

            if (defaultAMPMOut == "PM" && defaultHourOut >12) {
                defaultHourOut += 12;//hours are in 24-hour format (0-23)
            }
   //Your Code
试试这个

  // Your Code
    if (defaultAMPMIn == "PM" && defaultHourIn >12) {
                defaultHourIn += 12;//hours are in 24-hour format (0-23)
            }

            if (defaultAMPMOut == "PM" && defaultHourOut >12) {
                defaultHourOut += 12;//hours are in 24-hour format (0-23)
            }
   //Your Code

为什么不做一些更简单的事情并将其转换为一个可重用的函数,比如:

var time = document.getElementById('timeIn').value;
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "PM" && hours<12) hours = hours+12;
if(AMPM == "AM" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
alert(sHours + ":" + sMinutes);
var time=document.getElementById('timeIn').value;
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var AMPM=time.match(/\s(.*)$/)[1];

如果(AMPM==“PM”&&hours为什么不做一些更简单的事情,并将其转换为一个可重用的函数,比如:

var time = document.getElementById('timeIn').value;
var hours = Number(time.match(/^(\d+)/)[1]);
var minutes = Number(time.match(/:(\d+)/)[1]);
var AMPM = time.match(/\s(.*)$/)[1];
if(AMPM == "PM" && hours<12) hours = hours+12;
if(AMPM == "AM" && hours==12) hours = hours-12;
var sHours = hours.toString();
var sMinutes = minutes.toString();
if(hours<10) sHours = "0" + sHours;
if(minutes<10) sMinutes = "0" + sMinutes;
alert(sHours + ":" + sMinutes);
var time=document.getElementById('timeIn').value;
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var AMPM=time.match(/\s(.*)$/)[1];

如果(AMPM==“PM”&&hours12小时时钟到24小时时钟,小时+周期转换

功能至24小时(小时、时段){
如果(时段=='AM'&&H===12){
小时-=12;
}否则如果(时段=='PM'和小时数<12){
小时+=12;
}
返程时间;
}
常数小时12=[1,2,3,4,5,6,7,8,9,10,11,12];
常数小时24=[];
用于(以小时计12小时){
24小时。推(到24小时(小时,'AM'));
24小时。推(到24小时(小时,“下午”);
}

console.log(小时24);
12小时制到24小时制,小时+时段转换

功能至24小时(小时、时段){
如果(时段=='AM'&&H===12){
小时-=12;
}否则如果(时段=='PM'和小时数<12){
小时+=12;
}
返程时间;
}
常数小时12=[1,2,3,4,5,6,7,8,9,10,11,12];
常数小时24=[];
用于(以小时计12小时){
24小时。推(到24小时(小时,'AM'));
24小时。推(到24小时(小时,“下午”);
}


console.log(hours24);
这在不同的语言环境下能正常工作吗?@ppeterka我不确定。你可以看看。它可能是javascript中处理日期/时间的最佳库。你可以省去很多麻烦。“包括momentjs库以便使用它?”是的,你可以把它做成一个片段吗?或者
timeIn
timeOut
应该是什么值,因为你已经给出了两种不同格式的可能性。这在不同的语言环境下能正常工作吗?@ppeterka我不确定。你可以看看。它可能是用javascript处理日期/时间的最佳库。你可以保存有很多麻烦。“包括momentjs库以便使用它?”是的,你可以把它作为一个片段吗?或者
timeIn
timeOut
应该是什么值,因为你已经给出了两种不同格式的可能性。这是一个示例,旨在指导,而不是为你编写代码:)这是一个示例,旨在指导,而不是为您编写代码:)我测试了上面的代码并为我工作。我不确定这是否会防止任何其他时间冲突的错误。看来24小时都不会被击中。如果我选择12AM,它将显示12小时。你应该检查它是否显示AM和12,在我的If(defaultAMPMOut/In==“PM”&&defaultHourOut/In!=12)中设置为0或1So。我应该检查12AM,在这种情况下减去?不同的If语句<代码>如果(defaultAMPMOut/In==“AM”&&defaultHourOut/In==12)
减去12,因为12AM与00:00相同没有问题!很高兴提供帮助。我测试了上面的代码并为我工作。我不确定这是否会防止任何其他时间冲突的错误。看来24小时都不会被击中。如果我选择12AM,它将显示12小时。你应该检查它是否显示AM和12,在我的If(defaultAMPMOut/In==“PM”&&defaultHourOut/In!=12)中设置为0或1So。我应该检查12AM,在这种情况下减去?不同的If语句<代码>如果(defaultAMPMOut/In==“AM”&&defaultHourOut/In==12)
减去12,因为12AM与00:00相同没有问题!很乐意帮忙。