是否有任何解决方法或解决方法 - 即使不使用Moment.js?
<form id="DateFor," class="row-form" method="post" action="">
<p>
<label for="ETL_DATE">Search by date:</label>
<span>
<script>
var curr_month_day = moment();
var prev6_month_start = moment().subtract(6, 'months').startOf('month');
var prev6_month_end = moment().subtract(6, 'months').endOf('month');
var Dur_prev6_month_start = moment.duration({ from: curr_month_day, to: prev6_month_start });
var Dur_prev6_month_end = moment.duration({ from: curr_month_day, to: prev6_month_end });
document.write('<input data-widget="datepicker" data-format="mmm dd, yyyy" type="text" data-min="' +Math.round(Dur_prev6_month_start.asDays())+ '" data-max="' +Math.round(Dur_prev6_month_end.asDays())+ '" data-select-months="false" data-select-years="false" value="" size="20" id="ETL_DATE" name="ChangeDatePicker">');
</script>
</span>
</p>
</form>
此代码返回2017年1月(目前) - 2016年12月30日和2017年1月29日的混乱开始和结束日期。在我看来,2月份的不同天数是根本原因。
应该正确计算2017年1月第一天和最后一天的天数。
编辑: 我想确认问题是Moment.js的'.duration'和'.subtract'。
答案 0 :(得分:0)
伙计 - 我找到了一个解决方法,但我完全删除了&#39; Moment.js&#39;并开始使用一点&#39; Date.js&#39;和普通的JavaScript。
这是修复:
<form id="DateFor," class="row-form" method="post" action="">
<p>
<label for="ETL_DATE">Search by date:</label>
<span>
<script>
var curr_month_day = new Date (), y = curr_month_day.getFullYear(), m = curr_month_day.getMonth(), d = curr_month_day.getDate();
console.log(m)
var prev6_month_begin = new Date(y, m - 6).clearTime().moveToFirstDayOfMonth();
var prev6_month_end = new Date(y, m - 6).clearTime().moveToLastDayOfMonth();
console.log(prev6_month_begin)
console.log(prev6_month_end)
var timeDiff = Math.abs(curr_month_day.getTime() - prev6_month_begin.getTime());
var Dur_prev6_month_start = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(Dur_prev6_month_start);
var timeDiff = Math.abs(curr_month_day.getTime() - prev6_month_end.getTime());
var Dur_prev6_month_end = Math.ceil(timeDiff / (1000 * 3600 * 24));
console.log(Dur_prev6_month_end);
document.write('<input data-widget="datepicker" data-format="mmm dd, yyyy" type="text" data-min="-' +(Dur_prev6_month_start -1)+ '" data-max="-' +(Dur_prev6_month_end -1)+ '" data-select-months="false" data-select-years="false" value="" size="20" id="ETL_DATE" name="ChangeDatePicker">');
</script>
</span>
</p>
</form>