我需要计算两个日期之间有6个小数的天。我正在使用以下功能:
/**
* Calculates the day difference for two given dates.
*
* @param {Date} from , the start date
* @param {Date} to , the end date
*
* @return {Number} the day difference
*/
function calculateDayDifference( from, to ) {
var dayDifference;
const ONEDAY = 1000 * 60 * 60 * 24;
if ( from != null && to != null ) {
dayDifference = Math.abs( from - to ) / ONEDAY;
}
return dayDifference;
}
问题在于,以下示例的计算不正确:
它返回8.625,但正确的值为8,583333。该错误值与正确值相差1小时。
在以下情况下:
返回的值6,416667是正确的。
对我来说,解决方法是在代码中添加以下内容:
if ( from.getTimezoneOffset( ) !== to.getTimezoneOffset( ) ) {
if ( from.getTimezoneOffset( ) < to.getTimezoneOffset( ) ) {
to.setHours( to.getHours( ) - 1 );
} else if ( from.getTimezoneOffset( ) > to.getTimezoneOffset( ) ) {
to.setHours( to.getHours( ) + 1 );
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句