适用于美国股票市场的Java Calendar TimeZone

时间:2017-06-08 01:52:58

标签: java android timezone stocks java.util.calendar

我正在进行与US NYSE & NASDAQ stock market相关的Android编程。到目前为止,我知道他们正在使用东部时间(ET)。股票市场于美国东部时间上午9点30分开盘,于美国东部时间下午4点结束。

为了检查股票市场目前是否开启/关闭,我想检查当前时间是否在上午9:30至下午4点之间。

以下代码是否正确,以便在ET时区获得用户时间?

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

正如我所读到的,东部时间(ET)观察夏令时。在夏季,它使用的是EDT,即UTC-4,而在冬季,它使用的是UTC-5的EST。纽约证券交易所纳斯达克正在使用ET时区?

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

1 个答案:

答案 0 :(得分:3)

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

这个时区考虑了夏季(但不是冬季)的夏令时,因此可以全年使用。

Wikipedia表示纽约证券交易所&纳斯达克股票市场也使用这个时区。

顺便说一句,我会使用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);