如何为轻量级图表设置自定义时区?

How to set a custom time zone for Lightweight Charts?

我有一个看起来像这样的轻量级图表设置。我想添加某种配置,以便图表可以向我显示本地时间,而不是通过 Unix 时间戳传递的通用时间,例如,它与我的相差几个小时。另一种可能性是修改 Unix 时间戳。

var chart = LightweightCharts.createChart(document.getElementById("charts"), {
  width: 1060,
  height: 537,
  layout: {
    backgroundColor: "#161616",
    textColor: "rgba(255, 255, 255, 0.9)",
    fontSize: 15,
    fontFamily: "Ubuntu",
  },
  grid: {
    vertLines: {
      color: "#424242",
      width: 0.3,
    },
    horzLines: {
      color: "#424242",
      width: 0.3,
    },
  },
  crosshair: {
    mode: LightweightCharts.CrosshairMode.Normal,
  },
  priceScale: {
    borderColor: "rgba(197, 203, 206, 0.8)",
    size: 5,
  },
  timeScale: {
    borderColor: "rgba(197, 203, 206, 0.8)",
    timeVisible: true,
    secondsVisible: false,
    rightBarStaysOnScroll: true,
  },
});

我已经 post 回答了类似的问题 here,但目前还没有 post 答案。

我发现有 2 种方法可以帮助您解决此问题:

  1. 您可以通过将 TZ 偏移量添加到时间来修改柱的源时间(我认为这是首选方式 - 见下文)
  2. 您可以覆盖 tickMarkFormatter, dateFormat and timeFormatter 以使用所需的 TZ 偏移正确设置日期格式。

我认为第一种方法(添加偏移量)是首选,因为它也会影响刻度线的生成及其权重,因此您的时间刻度看起来会更好,没有问题(例如,您可以看到 23:00时间而不是 30 天,因为您添加了 60 分钟的偏移量,它会稍微改变时间刻度)。

编辑 (03.11.2021):this doc获取有关如何支持时区的更多信息。