javascript - 使用 angularjs 区分两个日期?

标签 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 = 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";

人性化然后提取各个值只是不必要的开销。 moment 可以为您提取小时和分钟,因此无需从毫秒计算。

更新:

类似这样的事情:

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 日。 然后创建一个持续时间对象。然后将其转换为小时数(使用“下限”获得整数)。然后,您再次将其转换为分钟数,并减去您已经获得的小时数。

关于javascript - 使用 angularjs 区分两个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536829/

相关文章:

javascript - 按钮宽度和高度不正确

javascript - 在网页上嵌入 PDF 并水平滚动使其居中

html - 为什么我不能将所有 4 个元素都放在同一行中?

javascript - 如何让 fullcalendar 读取日期/时间?

javascript - 如何使用 moment.js 按降序创建最后 1 小时的分钟数组?

javascript - 正则表达式和javascript,一些匹配消失了!

javascript - AngularJS 解决依赖关系

javascript - AngularJS 指令循环遍历数组

javascript - 如何将表示时间的字符串添加到只有日期的时刻对象

c# - 通过带有 XML 的 JavaScript 的 WCF 服务 - 数组参数