Java 时区

本文展示了如何在Java中使用TimeZone类处理时区,通过设置默认时区,获取时间戳并格式化日期,强调时间戳在不同时区下的一致性。
 public static void main(String[] args) throws InterruptedException {
        //Arrays.stream(TimeZone.getAvailableIDs()).forEach(x-> System.out.println(x));

        TimeZone japanTimeZone = TimeZone.getTimeZone("Japan");
        TimeZone.setDefault(japanTimeZone);
        Long time=new Date().getTime();

        //-------Asia/Shanghai
        TimeZone shangHaiTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
        TimeZone.setDefault(shangHaiTimeZone);
        Date date=new Date(time);
        System.out.println(System.currentTimeMillis());
        System.out.println(TimeZoneUtil.format(date, TimeUtil.DATE_TIME_MIN_PATTERN,japanTimeZone));

        //----America/Belem
        TimeZone belemTimeZone = TimeZone.getTimeZone("America/Belem");
        TimeZone.setDefault(belemTimeZone);
        Date date1=new Date(time);
        System.out.println(System.currentTimeMillis());
        System.out.println(TimeZoneUtil.format(date1, TimeUtil.DATE_TIME_MIN_PATTERN,japanTimeZone));

    }

1、时间戳跟时区没有关系,任务统一时间在不同时区执行new Date().getTime() 得到的时间戳一样

### IntelliJ IDEA 中 Java 时区设置和问题解决方案 #### 设置项目全局时区 为了确保整个项目的日期时间操作都遵循同一时区,在 `pom.xml` 或者构建文件中指定 JVM 参数可以实现这一点。对于 Maven 构建工具而言,可以在 `<properties>` 节点下加入如下配置: ```xml <properties> <!-- 配置默认时区 --> <argLine>-Duser.timezone=Asia/Shanghai</argLine> </properties> ``` 此方法适用于所有通过Maven运行的应用程序[^1]。 #### 数据库连接字符串中的时区参数 当遇到与 MySQL 数据库交互过程中产生的时区错误提示时,应该修改 JDBC URL 来显式指定时区属性。具体做法是在数据库连接URL后面追加 `&serverTimezone=GMT%2B8` 类似的参数来声明目标时区。例如完整的连接串可能看起来像这样: ```plaintext jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 ``` 需要注意的是,这个改动通常需要配合应用程序服务器或者开发环境(如IntelliJ IDEA)一起调整,并且有时还需要重启计算机才能生效[^2]。 #### 修改 IDE 的启动选项 为了让 IntelliJ IDEA 使用特定的时区执行编译和其他任务,可以通过编辑IDE本身的启动脚本来添加 `-Duser.timezone=Your/TimeZone` 到 VM options 文件里。这一步骤能够影响到由该IDE发起的所有Java进程所使用的默认时区设定。 对于 Windows 用户来说,路径通常是 `%USERPROFILE%\.{product_name}\config\options\vmoptions.txt`; 对于 macOS 和 Linux 用户,则位于 `~/.{product_name}/config/options/vmoptions.txt`. 将下面这一行添加进去并保存更改: ```bash -Duser.timezone=Asia/Shanghai ``` 完成以上任一方式的操作后,请记得重新加载项目以及任何必要的服务实例以使新的时区设置生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值