Momentjs返回日期比实际日期落后两天

问题描述:

我想解析下面的日期字符串22-04-2017。这里是我的代码Momentjs返回日期比实际日期落后两天

var date = moment.parseZone($scope.booking.startDate, 'DD-MM-YYYY').format(); 

$scope.booking.startDate is 22-04-2017 

但我收到以下日期2017-04-20T22:13:00-20:17。我不在乎时间,我只需要日期是正确的。

我该如何解决?

只需使用moment(String, String)而不是parseZone,因为您的输入不包含时区信息。

作为parseZone文档说:

矩通常解释输入倍本地时间(或UTC时间如果使用moment.utc())。但是,输入字符串本身通常包含时区信息。 #parseZone解析时间,然后根据输入字符串设置区域。

这里工作示例:

// Mocking input value 
 
var $scope = { 
 
    booking: { 
 
    startDate: '22-04-2017' 
 
    } 
 
}; 
 
var date = moment($scope.booking.startDate, 'DD-MM-YYYY').format(); 
 
console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>