Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用angularjs时两个日期之间的差异?_Javascript_Angularjs_Momentjs - Fatal编程技术网

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方法创建持续时间。无法在注释中正确设置代码格式,因此我编辑了我的答案。