70

GregorianCalendarインスタンスがあり、必要な出力を取得するには、SimpleDateFormat(または、カレンダーで使用できるが、必要な#fromat()機能を提供するもの)を使用する必要があります。恒久的な解決策と同じくらい良い回避策を提案してください。

4

5 に答える 5

105

これを試して:

Calendar cal = new GregorianCalendar();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
dateFormat.setTimeZone(cal.getTimeZone());
System.out.println(dateFormat.format(cal.getTime()));
于 2011-04-11T13:16:29.787 に答える
39

eQuiの答えにはステップがありません

Calendar cal = new GregorianCalendar();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
#---- This uses the provided calendar for the output -----
dateFormat.setCalendar(cal); 
System.out.println(dateFormat.format(cal.getTime()));
于 2012-05-10T13:56:14.747 に答える
3

Calendar.getTime()は、SimpleDateFormatで使用できる日付を返します。

于 2011-04-11T13:14:26.323 に答える
3

結果のオブジェクトを呼び出してメソッドにcalendar.getTime()渡すだけです。Dateformat

于 2011-04-11T13:15:32.057 に答える
0

java.time

日付と時刻の作業には、最新のJava日付と時刻のAPIであるjava.timeを使用することをお勧めします。そうではありませんGregorianCalendar。aGregorianCalendarは日付、時刻、タイムゾーンのすべてを保持していたので、それの一般的な現代の代替はですZonedDateTime

必要な出力が何であるかを指定しませんでした。人間のユーザー向けの出力が必要だと思います。したがって、ユーザーのロケールにJavaの組み込みのローカライズされた形式を使用します。

private static final DateTimeFormatter FORMATTER
        = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
                .withLocale(Locale.forLanguageTag("es"));

例としてスペイン語を指定しました。JVMのデフォルトのロケールを使用する場合は、Locale.getDefault(Locale.Category.FORMAT)への呼び出しを指定するか、withLocale()完全に除外することができます。これで、aのフォーマットZonedDateTimeは簡単になりました(そして、GregorianCalendar)を使用した場合よりも簡単になりました。

    ZonedDateTime zdt = ZonedDateTime.of(
            2011, 4, 11, 19, 11, 15, 0, ZoneId.of("Australia/Perth"));
    System.out.println(zdt.format(FORMATTER));

この例からの出力:

11 de abril de 2011、19:11:15 AWST

日付のみが必要で、時刻やタイムゾーンが不要な場合は、次の2つの変更が必要です。

  1. LocalDateの代わりに使用してくださいZonedDateTime
  2. DateTimeFormatter.ofLocalizedDate()の代わりに使用してください.ofLocalizedDateTime()

私が本当に得た場合はどうなりGregorianCalendarますか?

GregorianCalendarまだjava.timeにアップグレードされていないレガシーAPIから取得した場合は、次のように変換しZonedDateTimeます。

    GregorianCalendar cal = new GregorianCalendar(
            TimeZone.getTimeZone(ZoneId.of("Australia/Perth")));
    cal.set(2011, Calendar.APRIL, 11, 19, 11, 15);
    ZonedDateTime zdt = cal.toZonedDateTime();

次に、前と同じように続行します。出力は同じになります。

リンク

Oracleチュートリアル: java.timeの使用方法を説明する日時。

于 2021-12-04T13:25:13.067 に答える