java获取gmt_Java读取系统默认时区

本文详细介绍了Java中TimeZone.getDefault()方法获取系统默认时区的实现过程,涉及源码分析,包括查找TZ环境变量、读取/etc/timezone、比较/etc/localtime与/usr/share/zoneinfo等步骤,最后默认返回GMT。
摘要由CSDN通过智能技术生成

工作中,遇到一个Java读取默认时区的问题,后来看了openjdk的源码,大致整理一下过程

public classTest {public voidtest(){

TimeZone.getDefault();

}

}

TimeZone.getDefault()会跳到下面代码:

private static synchronizedTimeZone setDefaultZone() {

TimeZone tz;//get the time zone ID from the system properties

String zoneID =AccessController.doPrivileged(new GetPropertyAction("user.timezone"));//if the time zone ID is not set (yet), perform the//platform to Java time zone ID mapping.

if (zoneID == null ||zoneID.isEmpty()) {

String javaHome=AccessController.doPrivileged(new GetPropertyAction("java.home"));try{

zoneID=getSystemTimeZoneID(javaHome);if (zoneID == null) {

zoneID=GMT_ID;

}

}catch(NullPointerException e) {

zoneID=GMT_ID;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值