无法使用JavaScript计算时间差

无法使用JavaScript计算时间差,javascript,datetime,Javascript,Datetime,我需要使用JavaScript计算当前日期时间和用户输入日期时间之间的时间差(以小时为单位)。这是我的密码: var user_date = '31-03-2019'; var dep_time='12:30PM'; var datePieces = user_date.split("-"); var mydate=[datePieces[1] , datePieces[0] , datePieces[2]].join("-");

我需要使用JavaScript计算当前日期时间和用户输入日期时间之间的时间差(以小时为单位)。这是我的密码:

var user_date = '31-03-2019';
        var dep_time='12:30PM';
        var datePieces = user_date.split("-");
        var mydate=[datePieces[1] , datePieces[0] , datePieces[2]].join("-");
        var todayDate = new Date();
        var todayMonth = todayDate.getMonth() + 1;
        var todayDay = todayDate.getDate();
        var todayYear = todayDate.getFullYear();
        if (todayDay < 10) {
          todayDay = '0' + todayDay;
        }
        if (todayMonth < 10) {
          todayMonth = '0' + todayMonth;
        }
        var todayDateText = todayMonth + "-" + todayDay + "-" + todayYear;
        var inputToDate = Date.parse(mydate);
        var todayToDate = Date.parse(todayDateText);
        //console.log(inputToDate, todayToDate);
        //console.log(user_date, todayDateText);
        if (inputToDate > todayToDate) {
            var date=new Date;
            var hours = date.getHours();
            var minutes = date.getMinutes();
            var ampm = hours >= 12 ? 'pm' : 'am';
            hours = hours % 12;
            hours = hours ? hours : 12; // the hour '0' should be '12'
            minutes = minutes < 10 ? '0'+minutes : minutes;
            var strTime = hours + ':' + minutes + ' ' + ampm;
            var timeStart = new Date(todayToDate + strTime);
            var timeEnd = new Date(mydate + dep_time);
            console.log(timeStart);
            console.log(timeEnd);
            var diff = (timeEnd - timeStart) / 60000; //dividing by seconds and milliseconds
            var minutes = diff % 60;
            var hours = (diff - minutes) / 60;
            alert(hours);
        } else {

        }
var用户_日期='31-03-2019';
var dep_time='12:30PM';
var datePieces=user_date.split(“-”);
var mydate=[datePieces[1],datePieces[0],datePieces[2]];
var todayDate=新日期();
var todaymount=todayDate.getMonth()+1;
var todayDay=todayDate.getDate();
var todayYear=todayDate.getFullYear();
如果(今天<10){
今天='0'+今天;
}
如果(今天月<10){
今日月='0'+今日月;
}
var todayDateText=todayMonth+“-”+todayDay+“-”+todayYear;
var inputToDate=Date.parse(mydate);
var todayToDate=Date.parse(todayDateText);
//控制台日志(inputToDate,todayToDate);
//日志(用户日期,todayDateText);
如果(输入日期>今天日期){
var日期=新日期;
var hours=date.getHours();
var minutes=date.getMinutes();
var ampm=小时数>=12?“下午”:“上午”;
小时数=小时数%12;
小时数=小时数?小时数:12;//小时数“0”应为“12”
分钟=分钟<10?'0'+分钟:分钟;
var strTime=hours+':'+minutes+''+ampm;
var timeStart=新日期(todayToDate+strTime);
var TIMEND=新日期(mydate+dep_time);
console.log(timeStart);
console.log(timeEnd);
var diff=(timeEnd-timeStart)/60000;//除以秒和毫秒
var分钟数=差异%60;
变量小时=(差异-分钟)/60;
警报(小时);
}否则{
}
这里我得到了输出
NAN
。我有用户输入和当前日期时间,并且我需要
HRS

1)date.parse方法从1970年1月1日起将日期转换为毫秒。因此,请参见将用户输入日期转换为自1970年1月1日起的毫秒

2) 在Javascript中,新Date()对象上的getTime()方法获取从1970年1月1日到当前时间的毫秒数

3) 因此,找到这些毫秒的差异可以得到以毫秒为单位的差异

4) 由于1小时=3600000毫秒,要找出小时数的差异,请将答案除以3600000,得到小时数的差异

  • 你似乎也忘记了在解析日期时包含dep_时间
解决方案如下:

<script>
"use strict";
var user_date = '31-03-2019 12:30 PM';
        var datePieces = user_date.split("-");
        var mydate=[datePieces[1] , datePieces[0] , datePieces[2]].join("-");

        var todayDate = new Date();
        var todayToDate = todayDate.getTime();
        // In JavaScript, getTime() gets the number of milliseconds that have passed since January 1, 1970.

        var inputToDate = Date.parse(mydate);

        if (inputToDate > todayToDate) {
            var diff = (inputToDate - todayToDate) / 3600000; //Since 1 h = 3600000 ms
            alert(diff);
        } else {
            var diff = (todayToDate - inputToDate) / 3600000; //Since 1 h = 3600000 ms
            alert(diff);
        }
</script>

“严格使用”;
var用户_日期='2019年3月31日下午12:30';
var datePieces=user_date.split(“-”);
var mydate=[datePieces[1],datePieces[0],datePieces[2]];
var todayDate=新日期();
var todayToDate=todayDate.getTime();
//在JavaScript中,getTime()获取自1970年1月1日以来经过的毫秒数。
var inputToDate=Date.parse(mydate);
如果(输入日期>今天日期){
var diff=(inputToDate-todayToDate)/3600000;//自1小时起=3600000毫秒
警报(差异);
}否则{
var diff=(todayToDate-inputToDate)/3600000;//自1小时起=3600000毫秒
警报(差异);
}

重复。检查此行
var timeStart=new Date(todayToDate+strTime)(将时间字符串添加到毫秒)那么正确的行应该是什么。