D3.js-获取某个月的天数



我正在使用D3.js(v3)绘制时间序列图,并试图计算出给定月份(即天数)所需的刻度量。根据我对文档的理解,d3.time-month应该在28到31天内返回一些东西,这正是我想要的,但由于某种原因,我显然错过了,我似乎无法获得我需要的号码。

有人能帮忙吗?

这就是我目前所掌握的:

console.log(date); // Fri Jul 01 2016 00:00:00 GMT+0100 (WEST)
monthDays = d3.time.month(date);
console.log(currentMonth+" has "+monthDays+" days."); // July has Fri Jul 01 2016 00:00:00 GMT+0100 (WEST) days.

您误读了有关间隔的文档:d3.time.month使用的间隔中的天数长度在28到31之间,但函数定义为

interval(date)

interval.floor(date)的别名。[…]

interval.floor(date)

向下舍入指定的日期,返回最新的时间间隔在日期之前或等于日期。[…]

基本上,d3.time.month(date)将在午夜返回该月的第一天,而不是该月的天数。


那么如何获得天数?据我所知,D3并没有给出一种获取给定日期的月长的方法。当然,你可以得到给定月份的天数范围,并提取其长度:

var date = new Date(2016, 01, 02); // 2016-02-02
console.log(
    d3.time.days(d3.time.month(date), d3.time.month.ceil(date)).length
)

或者可能更有效地使用像这个答案中那样的纯JShttps://stackoverflow.com/a/1185804/1071630:

var date = new Date(2016, 01, 02); // 2016-02-02
console.log(
    new Date(date.getFullYear(), date.getMonth()+1, 0).getDate()
)

var date = new Date(2016, 01, 02);
console.log(
  d3.time.days(d3.time.month(date), d3.time.month.ceil(date)).length
)
console.log(
	new Date(date.getFullYear(), date.getMonth()+1, 0).getDate()
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

相关内容

  • 没有找到相关文章

最新更新