D3 时间刻度将前后时间范围添加时间间隔的百分比

d3 time scale add before and after time range a percentage of time interval

本文关键字:时间 百分比 添加 范围 D3 时间刻度      更新时间:2023-09-26

我正在使用d3的time.scale.domain来渲染一些图形。

var time_range=d3.time.scale().domain([new Date(2008, 1, 1), new Date(2015, 11, 10)]);

如何为其添加 +- 10% 的时间范围?

function add_percentage(start_date, end_date , percentage){
    //Add 2015 - 2008 => Around 7 years , if percentage = 10 => around 9-10 months before and after 
}
add_percentage(new Date(2008, 1, 1),new Date(2015, 11, 10),10)
//Should return around 9-10 months before and after.

您可以使用下面的代码来执行此操作。我认为最好是研究天数之间的差异,而不仅仅是几个月,因为这会给你带来更高的准确性。但是由于您使用的是百分比,因此我真的认为现阶段的准确性并不那么重要。

function add_percentage(s, e , percentage){
    var t2 = e.getTime();
    var t1 = s.getTime();
    diff= parseInt((t2-t1)/(24*3600*1000))*percentage/100;
    d1=new Date(s.getFullYear(),s.getMonth(),s.getDay()-diff);
    d2=new Date(e.getFullYear(),e.getMonth(),e.getDay()+diff);
    return {start:d1, end:d2}
}

这对你有帮助吗?