1

私は SimpleDateFormat で何かをしようとしていますが、Javadoc を読んだ後、さらに混乱しました。タイムゾーン用と現在の時刻と日付用の 2 つのメソッドが必要です。私の形式は次のようになります。

Time Zone: GMT +01:00
Time and Date: Wednesday 17/04/2013, 20:38:34

しばらくの間、インターネットからコードを取得しました。それはうまくいきました:

    private String getFormattedTime() {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");        

        return sdf.format(cal.getTime());

    }

これは次のように出力されます: 20:41:34

他の形式については、次のようなことを試しました (まだ完全には完了していません)。

private static String getFormattedDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEEEEEEEE DD/MM/yyyy, HH:mm:ss");      

    return sdf.format(cal);

}

private static String getTimeZone() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("z");       

    return sdf.format(cal.getTimeZone());

}

このコードを実行すると、最初のreturn行で IllegalArgumentException が発生します。

Javadocs には、これを使用する方法の例がないようです。

4

1 に答える 1

7

SimpleDateFormat は、カレンダーではなく日付に作用します。変換するには、.getTime() を使用するため、コードは次のようになります。

private static String getFormattedDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEEEEEEEE dd:MM:yyyy, HH:mm:ss");      

    return sdf.format(cal.getTime());

}

private static String getTimeZone() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("z");       

    return sdf.format(cal.getTime());

}

ただし、博士論文を書くことができるという理由から、jodaを使用する方がおそらくより良い方法です。

于 2013-04-17T18:54:36.960 に答える