java.time
旧的日期时间 API(java.util
日期时间类型及其格式化 API SimpleDateFormat
)已过时且容易出错。建议完全停止使用它并切换到java.time
现代日期时间 API *。
使用现代 API 的解决方案:
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
// Replace ZoneId as applicable e.g. ZoneId.of("America/New_York")
ZonedDateTime now = ZonedDateTime.now(ZoneId.systemDefault());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("XX", Locale.ENGLISH);
String offset = dtf.format(now);
System.out.println(offset);
}
}
输出:
+0100
从Trail: Date Time了解有关现代日期时间 API *的更多信息。
来自 Ole VV 的反馈:
您可能希望使用小写字母xx
,这样您也可以获得偏移量零+0000
而不是
Z
偏移量零。
谢谢,Ole VV 的增值将使寻找+0000
而不是Z
零时区偏移的人受益。我建议严格根据具体要求使用它。ISO 8601建议使用Z
零时区偏移作为时区指示符。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。