无法使用JavaScript计算时间差
我需要使用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("-");
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)代码>(将时间字符串添加到毫秒)那么正确的行应该是什么。