相关疑难解决方法(0)

Java时间:创建自己的时区

我正在尝试迁移旧库以使用"新"Java时间API并在一点上挣扎.

上下文

我现在开发了一段时间用于处理银行业图表的应用程序.所以你有一个连续的价格流,你将它们聚合1天蜡烛(例如),开放,高,低和收盘.

主要问题在于图表只有在市场开放时才需要显示蜡烛.对于外汇,这意味着从纽约周日17:00到纽约周五17:00.所以这一天从纽约时间17:00开始,即使你住在日内瓦,你的蜡烛也需要反映出来.

我使用旧的"Java Time"API执行此操作的方法是创建自己的时区(请参阅下面的代码)

public class RelativeTimezone extends TimeZone {
  private final TimeZone zone;
  private final int addedTime;

  public RelativeTimezone(String id, TimeZone zone, int addedTime) {
    this.zone = zone;
    this.addedTime = addedTime;
    setID(id);
  }

  public final int getAddedTime() {
    return this.addedTime;
  }

  @Override
  public int getRawOffset() {
    return this.zone.getRawOffset() + this.addedTime;
  }

  @Override
  public void setRawOffset(int offsetMillis) {
    this.zone.setRawOffset(offsetMillis - this.addedTime);
  }

  // Other overriding methods that simply forward to "this.zone"
  // ...
}
Run Code Online (Sandbox Code Playgroud)

致电:

TimeZone forexTimezone = …
Run Code Online (Sandbox Code Playgroud)

java time timezone java-time

6
推荐指数
0
解决办法
173
查看次数

从SimpleTimeZone获取ZoneId

使用Java我有一个SimpleTimeZone具有GMT偏移和来自遗留系统的夏令时信息的实例.

我想检索ZoneId能够使用Java 8时间API.

实际上,toZoneId返回ZoneId没有夏令时的信息

SimpleTimeZone stz = new SimpleTimeZone( 2 * 60 * 60 * 1000, "GMT", Calendar.JANUARY,1,1,1, Calendar.FEBRUARY,1,1,1, 1 * 60 * 60 * 1000);
stz.toZoneId();
Run Code Online (Sandbox Code Playgroud)

java timezone dst java-time

0
推荐指数
1
解决办法
781
查看次数

标签 统计

java ×2

java-time ×2

timezone ×2

dst ×1

time ×1