如何使用Joda找出UTC偏移量?

时间:2012-06-05 15:44:59

标签: java jodatime

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

2 个答案:

答案 0 :(得分:13)

不确定它是否是最佳方式,但这是一种方法:

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)

您提供的示例不包括小时数的前导零。如果这就是你真正要求的(如何排除前导零),那么我没有帮助。

答案 1 :(得分: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";

}

情侣警告:

  • JodaTime 获取默认DateTimeZone。您可以修改它以接受传递给方法的特定DateTimeZone。
  • 以“-7 Hours”之类的格式返回,但您可以根据需要对其进行格式化。

希望有所帮助。

JP