7

Joda Timeライブラリを調べています。エポックタイムスタンプとタイムゾーンを指定して DateTime オブジェクトを構築する方法を見つけようとしています。そのタイムゾーンで、そのエポック時間の曜日、曜日などを見つけることができることを願っています。ただし、DateTimeZone を DateTime コンストラクターに渡す方法がわかりません。

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.Instant;

public class TimeZoneTest {

    public static void main (String[] args) {

        long epoch = System.currentTimeMillis()/1000;

        DateTimeZone tz = new DateTimeZone( "America/New_York" );

        DateTime dt = new DateTime( epoch, tz );

        System.out.println( dt );
    }

}

上記の「America/New_York」のハードコーディングされた例を試しましたが、これはコンパイラーから取得しました。私は何を間違っていますか?

$ javac -cp "joda-time-2.2.jar:." TimeZoneTest.java
    TimeZoneTest.java:12: org.joda.time.DateTimeZone is abstract; cannot be instantiated
    DateTimeZone tz = new DateTimeZone( "America/New_York" );
                      ^
    1 error
4

1 に答える 1

11

ID からタイム ゾーンを取得するには、次を使用しますDateTimeZone.forID

DateTimeZone zone = DateTimeZone.forID("America/New_York");

余談ですが、「エポック」は変数に適した名前ではないと思います。実際には「Unix エポックからの秒数」です。さらに、1000 で割っている理由がわかりません...の関連するコンストラクターDateTimeはタイム ゾーンと Unix エポックからのミリ秒System.currentTimeMillis()を取得します... から返された値を直接渡すことができます。

于 2013-03-29T20:36:21.733 に答える