我正在做与美国纽约证券交易所和纳斯达克股票市场相关的Android编程。目前我知道他们使用东部时间(ET)。 股票市场在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 时区?
我想确保我的比较是使用与纽约证券交易所和纳斯达克股票市场相同的时区,即上午9:30至下午4点。
new GregorianCalendar()
,我建议考虑获取ThreeTenABP或Meno Hochschild(!)的Time4J。答案中的其他内容仍然适用。 - Ole V.V.Calendar
API 不符合当前的编程实践(尽管人们在1995年有不同的看法),但我没有提及替代更现代的库,这些库具有更好的风格或更多的功能,因为我的指导方针是只有在旧设计无法令 OP 满意地解决具体问题时才建议使用它。我不知道 OP 想要投入多少复杂的日期/时间编程。关于我的库 Time4J,有一个姊妹项目 Time4A 适用于 Android 平台。 - Meno HochschildGregorianCalendar
不能在短视情况下正常工作,以确定当前时间是否在给定的营业时间内。只需再做一点点,就可能会发现它比使用更新的类更加繁琐或容易出错。我刚刚读到JSR-310似乎即将进入Android,所以我担心那些最终维护代码的人会因为使用陈旧的类而诅咒编码者。我承认,在这一点上,我可能已经变成了比你更多的传道者。 - Ole V.V.java.util.Calendar
),因此未来的 Android 将提供至少 3 种不同的日期时间 API。 - Meno Hochschild