1


0

Tue Mar 03 13:43:00のようなCalendarオブジェクトを作成することは可能ですか(タイムゾーンなし)。

`+ Tue Mar 03 13:43:00 `のようなタイムゾーンでカレンダーオブジェクトを送信する必要があります。 Calendarオブジェクトは常に ` Tue Mar 03 13:43:00 CST 2009 +`で返されることを知っているので、タイムゾーンなしで作成するにはどうすればよいですか?

4 Answer


1


あなたは DateFormatクラス(より具体的にはhttp://java.sun.com/javase/6)を使うことができます。 /docs/api/java/text/SimpleDateFormat.html[SimpleDateFormat]具象サブクラス)を使用して日付をフォーマットします。 これが一例です。

カレンダーcal = Calendar.getInstance(); DateFormatフォーマット= new SimpleDateFormat( "EEE MMM dd HH:mm:ss");

String dateString = format.format(cal.getTime()));

プリント:

金3月6日15時50分26秒


1


TimeZoneなしでCalendarオブジェクトを持つことはできません。 本当に、それは意味をなさない - カレンダーは " 時間内の特定の瞬間"を表すように努める - 方法あなたが表している時間がどのTimeZoneであるか知らずに、あなたは時間内にインスタンスを表すことができますか?

そのため、考慮すべき点がいくつかあります。

  1. あなたはこのカレンダーを他のコンポーネントに渡す必要があると言います - そのAPIはカレンダーがどのTimeZoneにあるかを気にかけますか? そのAPIはTimeZone設定を無視し、それを使用してそれ自身のローカルタイムゾーンなどとの時差を計算しますか。

  2. CalendarインスタンスのTimeZoneを簡単に変更できることをご存知ですか?

カレンダーcal = Calendar.getInstance(); cal.setTimeZone(TimeZone.getDefault()); //システムのデフォルトのTimeZoneを返しますcal.setTimeZone(TimeZone.getTimeZone( "EST")); //東部標準時cal.setTimeZone(TimeZone.getTimeZone( "Asia / Kolkota"); // UTC 5:30
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html[Calendar]、http://java.sun.com/javase/6/docs/api/javaにあるJavadoc /util/TimeZone.html[TimeZone]。


0


単純なDateオブジェクトを使うことができます。

日付d = new Date();日付d2 = calendar.getTime();

あるいはもっと単純な、ミリ秒単位の時間です。

長い時間= System.currentTimeMillis();

タイムゾーンの混乱を避けるために、すべての日付/時刻をGMT 0などの標準タイムゾーンとして保存および設定し、必要に応じて表示などの時刻を変換することをお勧めします。


0


私の他の答えについてのあなたの質問とあなたのコメントを読み直すと、問題はあなたが結果をStringではなくCalendarオブジェクトにしたいということです。 したがって、カレンダーの文字列表現をフォーマットすることは問題ではありません。

この場合、あなたが求めていることは技術的に不可能です。Calendarクラスのすべての実装は、内部時間を表すために存在します。これは、UNIXエポック(Jan 1 1970 00:00 GMT)からのミリ秒数として格納されます。 ボストンの "5:00 am"の時間はシアトルの "5:00 am"とは異なります - 内部タイムスタンプは異なります。

あなたの最善の策はどこでも同じタイムゾーンを使うことでしょう、そしておそらくGMTはその目的のために最も理にかなっています:

cal.setTimeZone(TimeZone.getTimeZone( "GMT 0000"));