12

最終的に次の形式の文字列を作成したいと思い-5:00ます(たとえば、ニューヨークにいる場合)。Jodaを使用してこれを行うための最良の方法は何ですか?

4

2 に答える 2

15

それが最善の方法かどうかはわかりませんが、次の1つの方法があります。

DateTimeFormatter dtf = DateTimeFormat.forPattern("ZZ");

DateTimeZone zone;

zone = DateTimeZone.forID("America/Los_Angeles");
System.out.println(dtf.withZone(zone).print(0));  // Outputs -08:00

zone = DateTimeZone.forOffsetHoursMinutes(-5, 0);
System.out.println(dtf.withZone(zone).print(0)); // Outputs -05:00

DateTime dt = DateTime.now();
System.out.println(dtf.print(dt)); // Outputs -05:00 (time-zone dependent)

ただし、この例には、時間の先行ゼロは含まれていません。それがあなたが本当に求めていること(先行ゼロを除外する方法)なら、私は助けにはなりません。

于 2012-06-05T15:59:04.310 に答える
3

時間単位のオフセットを取得するための簡単な方法

public static String getCurrentTimeZoneOffset() {

    DateTimeZone tz = DateTimeZone.getDefault();
    Long instant = DateTime.now().getMillis();

    long offsetInMilliseconds = tz.getOffset(instant);
    long hours = TimeUnit.MILLISECONDS.toHours( offsetInMilliseconds );
    String offset = Long.toString( hours );

    return offset + " Hours";

}

カップルの警告:

  • これは、JodaTimeDateTimeZoneからデフォルトを取得します。メソッドに渡される特定のDateTimeZoneを受け入れるように変更できます。
  • これにより、「-7時間」のような形式で返されますが、適切と思われる形式で簡単にフォーマットできます。

お役に立てば幸いです。

JP

于 2014-01-29T01:54:54.413 に答える