2017-06-08 10 views
1

私はUS NYSE & NASDAQ stock marketに関連するAndroidプログラミングを行っています。これまでのところ、私は彼らが東部標準時(ET)を使っていることを知っています。株式市場は午後9時30分にオープンし、午後4時に終了する。米国株式市場のJava Calendar TimeZone

現在、株式市場が開いている/閉じることを確認するために、現在の時刻が午前9時30分から午後4時であるかどうかをチェックしたいと思います。

ETタイムゾーンでユーザー時間を取得するには、以下のコードは正しいですか?

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

私が読んだとき、Eastern Time(ET)は夏時間を観察しています。夏期はUTC-4のEDTを使用しますが、冬期はUTC-5のESTを使用します。したがって、NYSE & NASDAQはETタイムゾーンを使用していますか?

私は9.30am - 4pmの私の比較がNYSE & NASDAQ株式市場と同じタイムゾーンを使用しているのを確認したいと思います。

答えて

2

古くなったID「US/Eastern」の代わりに、IANAが管理するtzdbに従って「America/New_York」を選択します。

このタイムゾーンでは、夏期(ただし冬期ではない)の夏時間が考慮されるため、年間を通して適用されます。

Wikipediaは、NYSE &ナスダック市場はこのタイムゾーンも使用していることを示しています。

ちなみにCalendar.getInstance()の代わりにnew GregorianCalendar()を使用して、あなたが正しいカレンダーを取得していることを確認してください(あなたがタイにいる場合)。

オープン状態は次のようになります評価(現地時間半開区間を「9:00:16分の30」):メノホックシールドによって

int hour = cal.get(Calendar.HOUR_OF_DAY); 
    int minute = cal.get(Calendar.MINUTE); 
    boolean open = (hour > 9 || (hour == 9 && minute >= 30)) && (hour < 16); 
+0

非常に良い答え。あなたが '新しいGregorianCalendar() 'ではなく、時代を踏んで作業しているなら、私は[ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP)かMeno Hochschild(!)の[Time4J ](https://github.com/MenoData/Time4J)。答えの中の他のすべてが依然として適用されます。 –

+1

@ OleV.V。古い「カレンダー」APIは、現在のプログラミング手法(1995年に人々が異なって判断した)に従ってうまく設計されていないという意見を述べていますが、ここでのガイドラインそれは、OPの具体的な問題が古いデザインによって満足のいく方法で解決できない場合にのみ示唆することです。私は、OPが複雑な日付/時間プログラミングにどれくらい投資したいのか分かりません。私のlib Time4Jについては、Androidプラットフォームのための姉妹プロジェクト[Time4A](https://github.com/MenoData/Time4A)があります –

+0

あなたの点をありがとう。私はまた、現在の時間が与えられた営業時間内にあるかどうかを判断するために、「GregorianCalendar」がすぐにはうまくいかない理由を理解していません。ちょっとだけやってみてください。新しいクラスよりも面倒で、エラーがあると感じるかもしれません。私はちょうどJSR-310がAndroidに来るようだと読んでいるので、コードを維持してしまう人たちは、疲れたクラスを使ったためにコーダーを呪います。私はこの時点であなたよりも多くの伝道者になったかもしれませんが、私は告白します。 –

関連する問題