我想以-5:00
的形式结束一个字符串(例如,如果我们在纽约)。使用Joda进行此操作的最佳方式是什么?
答案 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";
}
DateTimeZone
。您可以修改它以接受传递给方法的特定DateTimeZone。希望有所帮助。
JP