我在我的网络应用程序中遇到问题,我正在计算开始时间和结束时间差异,它适用于Chrome v.57,Firefox v.52。
它在Firefox v.45(CentOS 6.6)上失败了,我检查了CentOS 6.6 repo它是它上面的最新版本。
有人可以告诉我如何计算时间的差异,以便它适用于所有浏览器吗?
我在我的网络应用程序中使用bootstrap-datetimepicker,用户可以选择自己选择的时间。
var start_time = '2017-04-11 23:29:41 -07:00',
end_time = '2017-04-10 23:29:41 -07:00',
start_time_js = start_time.split(' '),
end_time_js = start_time.split(' ');
start_time_js = new Date(start_time_js[0] + ' ' + start_time_js[1]);
end_time_js = new Date(end_time_js[0] + ' ' + end_time_js[1]);
elapsed_time = end_time_js.getTime() - start_time_js.getTime();
if(elapsed_time < 0) {
console.log('Start time must be less then end time')
}
Firefox 45中调试模式的屏幕截图,请注意start_time_js
说Invalid Date
。
答案 0 :(得分:1)
由于您不能使用外部库,您必须自己解析输入,然后您可以使用new Date(year, month, date, hours, minutes, seconds, milliseconds);
构造函数。
请注意,月份为0索引。
这是一份工作样本:
function getDateFromString(input){
var split = input.split(' ');
var datePart = split[0].split('-');
var timePart = split[1].split(':');
var dt = new Date(datePart[0], datePart[1]-1, datePart[2], timePart[0], timePart[1], timePart[2]);
return dt;
}
var start_time = '2017-04-11 23:29:41 -07:00',
end_time = '2017-04-10 23:29:41 -07:00';
var dtStart = getDateFromString(start_time);
var dtEnd = getDateFromString(end_time);
var elapsed_time = dtEnd.getTime() - dtStart.getTime();
if(elapsed_time < 0) {
console.log('Start time must be less then end time')
}
&#13;
跨浏览器处理JavaScript日期的最佳方法之一是使用momentjs。在您的情况下,您可以使用moment parsing和isBefore
/ isAfter
来比较时刻对象。
您的代码可能如下所示:
var start_time = '2017-04-11 23:29:41 -07:00',
end_time = '2017-04-10 23:29:41 -07:00',
start_time_js = start_time.split(' '),
end_time_js = end_time.split(' ');
var mStart = moment(start_time_js[0] + ' ' + start_time_js[1]);
var mEnd = moment(end_time_js[0] + ' ' + end_time_js[1]);
if(mEnd.isBefore(mStart)) {
console.log('Start time must be less then end time')
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
答案 1 :(得分:0)
看看这里也许是掌舵,并从上面包含cdn Invalid date using moment javascript and DateTimePicker eonasdan Bootstrap datetimepicker invalid date conversion
部分/无法在localhost模式下工作