12

我想以以下形式结束一个字符串-5:00(例如,如果我们在纽约)。使用 Joda 执行此操作的最佳方法是什么?

4

2 回答 2

15

不确定这是否是最好的方法,但这是一种方法:

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";

}

几个警告:

  • DateTimeZone这从JodaTime获取默认值。您可以对其进行修改以接受传递给该方法的特定 DateTimeZone。
  • 这会以“-7 小时”之类的格式返回它,但您可以很容易地按照您认为合适的格式对其进行格式化。

希望有帮助。

J.P

于 2014-01-29T01:54:54.413 回答