2

我正在做与US NYSE & NASDAQ stock market. 到目前为止,我知道他们使用的是东部时间 (ET)。股市于美国东部时间上午 9.30 开市,下午 4 点收市。

为了检查股市当前开盘/收盘,我想检查当前时间是否在上午 9.30 - 下午 4 点之间。

下面的代码是否正确,以获取 ET 时区的用户时间?

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("US/Eastern"));

正如我所读到的,东部时间 (ET) 遵守夏令时。夏季使用 EDT,即 UTC-4,而冬季使用 EST,即 UTC-5。那么 NYSE 和 NASDAQ 使用的是 ET 时区吗?

我想确保我对上午 9.30 至下午 4 点的比较使用与纽约证券交易所和纳斯达克股票市场相同的时区。

4

1 回答 1

3

根据IANA 维护的tzdb,我会选择“America/New_York”,而不是过时的 id “US/Eastern” 。

该时区考虑了夏季(但不包括冬季)的夏令时,因此可以全年应用。

维基百科指出纽约证券交易所和纳斯达克股票市场也使用这个时区。

顺便说一句,我会使用new GregorianCalendar()而不是Calendar.getInstance()确保您获得正确的日历(如果您在泰国,则相关)。

评估开放条件可能如下所示(本地时间“9:30/16:00”的半开放间隔):

    int hour = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    boolean open = (hour > 9 || (hour == 9 && minute >= 30)) && (hour < 16);
于 2017-06-08T05:51:16.330 回答