我使用-D参数设置了jvm时区。有没有办法以编程方式获得系统时区?我不打算修改JVM时区集。我只需要使用本地系统的时区。
答案 0 :(得分:0)
有一个私有方法TimeZone.getSystemTimeZoneID
,它不符合Java标准
你可以通过反思来称呼它:
Method m = TimeZone.class.getDeclaredMethod("getSystemTimeZoneID", String.class, String.class);
m.setAccessible(true);
String javaHome = System.getProperty("java.home");
String systemTimeZone = (String) m.invoke(null, javaHome, null);
有一种类似的私有方法TimeZone.getSystemGMTOffsetID
。它返回一个类似GMT+08:00
的字符串。