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

Lux*_*ode 10 java jodatime

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

csd*_*csd 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)
Run Code Online (Sandbox Code Playgroud)

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

  • 如果您有一个joda`DateTime`对象,那么您可以询问其时区,然后询问时区与UTC的偏移量(以毫秒为单位)(在该特定时间).例如:`long timeZoneOffsetMillis = dt.getZone().getOffset(dt.getMillis());` (3认同)
  • 假设偏移量总是一分钟的倍数(通常是一个安全的假设),`long hours = timeZoneOffsetMillis /(1000L*60L*60L);`和`long minutes =(timeZoneOffsetMillis /(1000L*60L))%60L;` (3认同)