【问题标题】:Difference between two dates by using angularjs?使用angularjs的两个日期之间的差异?
【发布时间】:2015-09-12 08:34:12
【问题描述】:

这是我的代码

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 来获得上述两个日期之间的差异。

【问题讨论】:

标签: javascript angularjs momentjs


【解决方案1】:

你应该使用:

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

【讨论】:

  • 您好 benohead,您的回答是正确的,但该代码仅在 IE 中有效......但在其他浏览器中无效。实际上我想要任何格式的持续时间(秒、分钟、小时)..
  • 你在其他浏览器中得到了什么?
  • 新日期("10/09/15T09:25:00");这不是在其他浏览器中转换日期时间格式....它给出“无效日期”它仅在 IE 中转换
  • 您应该使用 moment 从字符串创建日期并使用 diff 方法创建持续时间。
  • 无法在评论中正确格式化代码,所以我编辑了我的答案。
猜你喜欢
  • 2016-03-20
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 2015-09-14
  • 2015-06-21
  • 2020-02-06
  • 2023-04-08
相关资源
最近更新 更多