Javascript 使用angularjs时两个日期之间的差异?
这是我的密码Javascript 使用angularjs时两个日期之间的差异?,javascript,angularjs,momentjs,Javascript,Angularjs,Momentjs,这是我的密码 var departureDateFormat = new Date("10/09/15T09:25:00"); var arrivalDateFormat = new Date("13/09/15T13:25:00"); $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate']; $scope.format = $scope.formats[2]; var duration
var departureDateFormat = new Date("10/09/15T09:25:00");
var arrivalDateFormat = new Date("13/09/15T13:25:00");
$scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'dd.MM.yyyy', 'shortDate'];
$scope.format = $scope.formats[2];
var duration = moment.duration(arrivalDateFormat - departureDateFormat); //for reference of moment.js
var minutes = (duration / (1000 * 60)) % 60; // calliculating number of minutes
var hours = ((moment.duration(arrivalDateFormat - departureDateFormat)).humanize()); // calliculating number of hours
var timeInHours = ((hours == "an hour") ? 1 : hours.toString().substring(0, 1));
item.stopsDurationTime = timeInHours + "hrs " + minutes + "ms";
return timeInHours + "hrs " + minutes + "ms";
上面的代码在IE上工作,但在其他浏览器上不工作。现在我想通过使用angularJs/javascript来获得上述两个日期之间的差异。您应该使用:
var minutes = duration.minutes();
var hours = duration.hours();
return hours + "hrs " + minutes + "ms";
人性化,然后提取个人价值是不必要的开销。
矩可以为您提取小时和分钟,因此无需从毫秒计算
更新:
大概是这样的:
var departureDate = moment("10/09/15T09:25:00", "DD/MM/YYYYTHH:mm:ss");
var arrivalDate = moment("13/09/15T13:35:10", "DD/MM/YYYYTHH:mm:ss");
var duration = moment.duration(arrivalDate.diff(departureDate));
var hours = Math.floor(duration.asHours());
var minutes = Math.floor(duration.asMinutes()-(hours*60));
return hours + "hrs " + minutes + "ms";
您必须明确定义格式,否则根据您的区域设置,它会将“10/09”理解为10月9日或9月10日。
然后创建一个duration对象。然后将其转换为小时数(使用“floor”得到一个整数)。然后你再把它转换成分钟数,减去你已经得到的小时数。可能重复的问题Hi benohead,你的答案是正确的,但代码只在IE中工作,而不是在其他浏览器中。实际上我想要任何格式的持续时间(秒、分钟、小时)…你在其他浏览器中得到了什么?新日期(“10/09/15T09:25:00”);这不是在其他浏览器中转换日期-时间格式…它给出的是“无效日期”,它仅在IE中转换。您应该使用moment从字符串创建日期,并使用diff方法创建持续时间。无法在注释中正确设置代码格式,因此我编辑了我的答案。