Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
Javascript 如何计算两次之间的时差?_Javascript - Fatal编程技术网

Javascript 如何计算两次之间的时差?

Javascript 如何计算两次之间的时差?,javascript,Javascript,我已经写了代码来计算两次之间的时间,这是我的代码 <html> <head> <script> //javascript calculateDiff(); function calculateDiff(){ var _start = document.getElementsByName("usr").value; var _end = document.getElementsByName("usr2").value; _start_tim

我已经写了代码来计算两次之间的时间,这是我的代码

 <html>
<head>
<script>

//javascript

 calculateDiff();

function calculateDiff(){
var _start = document.getElementsByName("usr").value;
var _end = document.getElementsByName("usr2").value;

    _start_time = parseAMDate(_start);
    _end_time = parseAMDate(_end);

    if (_end_time < _start_time){
        _end_time = parseAMDate(_end,1);
    }

    var difference= _end_time - _start_time;

    var hours = Math.floor(difference / 36e5),
        minutes = Math.floor(difference % 36e5 / 60000);
    if (parseInt(hours) >= 0 ){
        if (minutes == 0){
            minutes = "00";
        }
        alert(hours+":"+minutes);
    }
}

function parseAMDate(input, next_day) {

    var dateReg = /(\d{1,2}):(\d{2})\s*(AM|PM)/;

    var hour, minute, result = dateReg.exec(input);

    if (result) {
        hour = +result[1];
        minute = +result[2];

        if (result[3] === 'PM' && hour !== 12) {
            hour += 12;
        }
    }
    if (!next_day) {
        return new Date(1970, 01, 01, hour, minute).getTime();
    }else{
        return new Date(1970, 01, 02, hour, minute).getTime();
    }
}
calculateDiff();
函数calculateDiff(){
var_start=document.getElementsByName(“usr”).value;
var_end=document.getElementsByName(“usr2”).value;
_开始时间=parseAMDate(\u开始);
_结束时间=parseAMDate(_结束);
如果(结束时间<开始时间){
_end_time=parseAMDate(_end,1);
}
var差=\u结束\u时间-\u开始\u时间;
var小时=数学下限(差/36e5),
分钟=数学下限(差值%36e5/60000);
如果(parseInt(小时)>=0){
如果(分钟==0){
分钟=“00”;
}
警报(小时+“:”+分钟);
}
}
函数parseAMDate(输入,下一天){
var dateReg=/(\d{1,2}):(\d{2})\s*(AM | PM)/;
变量小时、分钟、结果=dateReg.exec(输入);
如果(结果){
小时=+结果[1];
分钟=+结果[2];
如果(结果[3]=='PM'和时间!==12){
小时+=12;
}
}
如果(!下一天){
返回新日期(1970、01、01、小时、分钟);
}否则{
返回新日期(1970、01、02、小时、分钟);
}
}
//形式

</script>
</head>
<body>

<form> 
Select  start time:<input type="time" name="usr" id="startTime">
Select  end time: <input type="time" name="usr2" id="endTime">
<input type="button" value="cal" onclick="calculateDiff()">
</form>
</body>
</html>

选择开始时间:
选择结束时间:
如果我正在执行此操作,我将无法获得输出,请帮助我

当我运行这段代码时,我被解雇了

     calculateDiff();

     function calculateDiff(){
    _start = "01:00 AM";
    _end = "02:00 AM";

    _start_time = parseAMDate(_start);
    _end_time = parseAMDate(_end);

    if (_end_time < _start_time){
        _end_time = parseAMDate(_end,1);
    }

    var difference= _end_time - _start_time;

    var hours = Math.floor(difference / 36e5),
        minutes = Math.floor(difference % 36e5 / 60000);
    if (parseInt(hours) >= 0 ){
        if (minutes == 0){
            minutes = "00";
        }
        alert(hours+":"+minutes);
    }
}

function parseAMDate(input, next_day) {

    var dateReg = /(\d{1,2}):(\d{2})\s*(AM|PM)/;

    var hour, minute, result = dateReg.exec(input);

    if (result) {
        hour = +result[1];
        minute = +result[2];

        if (result[3] === 'PM' && hour !== 12) {
            hour += 12;
        }
    }
    if (!next_day) {
        return new Date(1970, 01, 01, hour, minute).getTime();
    }else{
        return new Date(1970, 01, 02, hour, minute).getTime();
    }
}
calculateDiff();
函数calculateDiff(){
_start=“凌晨01:00”;
_end=“凌晨02:00”;
_开始时间=parseAMDate(\u开始);
_结束时间=parseAMDate(_结束);
如果(结束时间<开始时间){
_end_time=parseAMDate(_end,1);
}
var差=\u结束\u时间-\u开始\u时间;
var小时=数学下限(差/36e5),
分钟=数学下限(差值%36e5/60000);
如果(parseInt(小时)>=0){
如果(分钟==0){
分钟=“00”;
}
警报(小时+“:”+分钟);
}
}
函数parseAMDate(输入,下一天){
var dateReg=/(\d{1,2}):(\d{2})\s*(AM | PM)/;
变量小时、分钟、结果=dateReg.exec(输入);
如果(结果){
小时=+结果[1];
分钟=+结果[2];
如果(结果[3]=='PM'和时间!==12){
小时+=12;
}
}
如果(!下一天){
返回新日期(1970、01、01、小时、分钟);
}否则{
返回新日期(1970、01、02、小时、分钟);
}
}

如何执行上述代码?

问题是
\u start
\u end
未定义的

var _start = document.getElementsByName("usr").value;
var _end = document.getElementsByName("usr2").value;
在使用之前:

_start = "01:00 AM";
_end = "02:00 AM";
所以它成功了

document.getElementsByName()
正在返回一个数组:

document.getElementsByName("usr")[0].value

//javascript
window.onload=calculateDiff;
函数calculateDiff(){
var_start=document.getElementsByName(“usr”)[0]。值;
var_end=document.getElementsByName(“usr2”)[0]。值;
_开始时间=parseAMDate(\u开始);
_结束时间=parseAMDate(_结束);
如果(结束时间<开始时间){
_end_time=parseAMDate(_end,1);
}
var差=\u结束\u时间-\u开始\u时间;
var小时=数学下限(差/36e5),
分钟=数学下限(差值%36e5/60000);
如果(parseInt(小时)>=0){
如果(分钟==0){
分钟=“00”;
}
警报(小时+“:”+分钟);
}
}
函数parseAMDate(输入,下一天){
var dateReg=/(\d{1,2}):(\d{2})\s*(AM | PM)/;
变量小时、分钟、结果=dateReg.exec(输入);
如果(结果){
小时=+结果[1];
分钟=+结果[2];
如果(结果[3]=='PM'和时间!==12){
小时+=12;
}
}
如果(!下一天){
返回新日期(1970、01、01、小时、分钟);
}否则{
返回新日期(1970、01、02、小时、分钟);
}
}
//形式
选择开始时间:
选择结束时间:

是否有任何错误消息?我想您的代码重复了,请清理。并澄清是否存在错误或其他问题。此处的警报消息未显示(输出),因为您的输入没有附加“AM”或“PM”,但您的代码仅适用于此。如果输出应包含在新文本框中,则表示必须在代码中添加什么?而不是
警报(小时+”:“+分钟)使用类似document.getElementByid(“myTextbox”).innerText=hours+“:“+minutes