美国股市的Java日历时区

美国股市的Java日历时区,java,android,timezone,stocks,java.util.calendar,Java,Android,Timezone,Stocks,Java.util.calendar,我正在做与美国纽约证券交易所和纳斯达克股票市场相关的Android编程。到目前为止,我知道他们使用的是东部时间(ET)。美国东部时间上午9:30开市,下午4点收盘 为了检查股票市场当前是否开盘/收盘,我想检查当前时间是否在上午9:30到下午4点之间 以下代码是否正确,以获取ET时区中的用户时间 Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(TimeZone.getTimeZone("US/Eastern"));

我正在做与美国纽约证券交易所和纳斯达克股票市场相关的Android编程。到目前为止,我知道他们使用的是东部时间(ET)。美国东部时间上午9:30开市,下午4点收盘

为了检查股票市场当前是否开盘/收盘,我想检查当前时间是否在上午9:30到下午4点之间

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

Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("US/Eastern"));
正如我读到的,东部时间(ET)遵守夏时制。夏季使用UTC-4的EDT,而冬季使用UTC-5的EST。那么纽约证交所和纳斯达克正在使用ET时区

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

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

根据IANA维护的时区,我会选择“美国/纽约”,而不是过时的id“美国/东部”

该时区考虑了夏季(而非冬季)的夏令时,因此可以全年应用

表示纽约证券交易所和纳斯达克股票市场也使用此时区

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

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

int hour=cal.get(日历小时/天);
int minute=cal.get(Calendar.minute);
布尔开放=(小时>9 | |(小时==9分钟>=30))&(小时<16);

Meno Hochschild的回答非常好。对于这些建议,如果您使用的是时间,而不是<代码>新的GRGGORICAN()/代码>,我会考虑获得Meno Hochschild或(!)的。答案中的其他所有内容仍然适用。@OleV.V。我同意你的观点,即根据当前编程实践,旧的
日历
-API设计得不好(人们在1995年的判断有所不同)但我没有提到其他更现代的图书馆,它们有更好的风格或更多的特点,因为我在这里的指导方针是,只有当OP的具体问题不能通过旧的设计以令人满意的方式解决时,我才会提出它。我不知道OP想要在复杂的日期/时间编程上投入多少。关于我的lib Time4J,Android平台有一个姐妹项目,谢谢你的观点。我也不明白为什么
gregoriacalendar
在短期内无法确定当前时间是否在给定的开放时间内。只要多做一点,就会发现它比新类更麻烦或更容易出错。我刚刚读到JSR-310似乎即将出现在Android上,所以我担心那些最终维护代码的人会因为使用了破旧的类而诅咒代码编写者。我承认,在这一点上,我可能比你更像一个福音传道者。事实上,Android-O(25级)将加入JSR-310,这使得Threeten ABP变得不必要(而Time4A仍将为需要它的用户提供更多功能)。然而,人们目前使用的大多数手机在很长一段时间内仍将使用旧的安卓操作系统版本。我甚至有这样的印象,谷歌并不反对旧的笨拙的日历API,而是从ICU4J中吸收了越来越多的API(我也不喜欢它的API风格,它类似于
java.util.Calendar
),因此未来的Android将提供至少3种不同的日期时间API。