2

我正在尝试在中央时区创建一个时间轴,如下所示 - 每天的主要滴答声,中午 12:00 的次要滴答声。

   __________________________
  |        |        |        |
04/24    12:00    04/25    12:00

我将使用timezone-js库来格式化中央时间的标签。唯一的问题是 D3 在本地时区(在我的情况下为东部时间)创建滴答声,因此滴答声不会落在中央时区边界上。请在此处查看 jsFiddle 。我该如何解决这个问题,以使刻度落在日期边界上。

相关问题 - 如何正确创建 d3.time.format 函数以将标签自定义为中央时间。我现在拥有的是以下内容,但此函数始终返回日期和时间。我希望它返回日期边界和中午时间的日期。

var formatDate = function(date) {
    var tzdate = new timezoneJS.Date(date, 'America/Chicago');
    return tzdate.toString('MM/dd HH:mm');
};
4

1 回答 1

1

借用这个问题:如何在 D3 图表的标签中包含换行符?

您可以添加一个函数来解析 X 轴,如下所示:

var parseXaxis = function (d) {
    var el = d3.select(this);
    var dtFormat = d3.time.format('%m/%d %H:%M');
    var words = dtFormat(d).split(' ');
    el.text('');

    if (words[1] == "00:00") {
        el.append('tspan').text(words[0]);        
    }
    else {
        el.append('tspan').text(words[1]);        
    }    
};

svg.selectAll('g.x.axis g text').each(parseXaxis);

在这里拉小提琴。如果需要,您还可以进行更多过滤以删除 06:00 和 18:00 的刻度。

于 2013-05-26T21:59:26.400 回答