转载:http://www.shaojiahao.org/java/jdk-timezone-setting
最近安装了win7,发现公司某些基于JDK1.4的项目在本地跑有些许问题,其中之一就是用Calendar获得的时间问题。通过多次实验,发现是win7使用UTC导致的问题,但是JDK1.5没有这些问题,估计是1.4的小bug吧,嘿嘿~在我本机,1.4获得的时间慢了8小时,其实它获得的时间实际上也没有问题,为什么这么说呢,因为他显示是如Mon Oct 25 03:00:29 GMT 2010,而GMT是英国格林威治时间,所以比现在慢8小时也是正确的,注意,我们是GMT+08:00!
这个时间虽然没有问题,但是当我们用SimpleDateFormat的时候,默认format出来的时间也就是慢8小时了,在我们的界面显示出来就悲剧了~我们可以采用TimeZone来解决此问题,演示代码如下:
package com.test;
import java.util.*;
public class Test{
public static void main(String args[]){
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
Calendar c = Calendar.getInstance();
Date d = c.getTime();
System.out.println(d);
}
}
看到了吗,就是TimeZone.setDefault(TimeZone.getTimeZone(“GMT+8″))这一句,只要这么一设置,就全局有效了,然后取得的时间就是正确的本地时间了,如Mon Oct 25 11:00:29 GMT+08:00 2010~
当然,你也可以选择使用jvm启动参数-Duser.timezone来设置,效果一样,不过如果你的程序跑在容器上的话最好就是用程序来设置了~
分享到:
相关推荐
java.io.FileNotFoundException 报错解决 高版本jdk 运行 java -jar 时 缺少 jdk1.8中的这个文件
6. **修改Java代码**:在无法通过系统设置或JVM参数解决的情况下,也可以在代码中显式设置时区,如`TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"))`,但这不是一个全局解决方案,只对当前运行的Java...
解决方法是在启动Java应用时通过`-Duser.timezone`参数指定正确的时区,如`-Duser.timezone=Asia/Shanghai`。 2. **Java日期时间类**:在早期的JDK版本中,`java.util.Date`和`java.util.Calendar`是主要的日期时间...
默认的时区可以通过`TimeZone.getDefault()`获取,而日历类型(如公历、伊斯兰历等)则可以通过`getInstance(Locale locale)`方法指定。 5. **创建和使用日历对象** 创建一个Calendar实例通常通过`Calendar....
1.6版本还包含了TimeZone和GregorianCalendar的改进。 7. **反射**:Java反射机制允许运行时动态访问类的信息,创建和调用对象,甚至修改类的行为。Class、Constructor、Method和Field类是反射的核心。 8. **异常...
characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai db.user=root db.password=zhangjianshan ``` 最后,通过`startup.sh`脚本启动Nacos服务。 ...
例如,使用`apt-get update`或`yum update`来更新包列表,`timedatectl set-timezone Asia/Shanghai`来设置时区,`useradd`和`groupadd`创建新用户和组,`ufw allow`或`iptables`配置防火墙规则。 然后是**安装JDK...
可以使用 `TimeZone.getDefault()` 查看当前默认时区,并使用 `TimeZone.getTimeZone("ID")` 设置特定时区。 2. **夏令时问题**:某些地区在特定季节会实行夏令时,这可能导致时间的偏差。Java的 `TimeZone` 类考虑...
`java -Duser.timezone=GMT+8 YourJavaProgram` 其中,`YourJavaProgram` 是 Java 应用程序的名称。 在解决了时区设置问题后,Java 应用程序将与系统时间保持一致。这将解决 8 小时时差问题。 此外,在某些情况下...
useSSL=false&serverTimezone=UTC" username="your_mysql_username" password="your_mysql_password"/> ``` 2. 在Java应用中使用JNDI查找数据源: ```java Context initCtx = new InitialContext(); Context ...
`TimeZone` 类提供了多种时区设置方式,包括使用 GMT、UTC 等国际时区标准。 在解决 Java 获取时间与系统时间差 N 个小时的问题时,需要首先找到 Java 的时区设置文件。这个文件通常位于 `jre` 文件夹下的 `lib\zi`...
【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 ...useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
serverTimezone=UTC <username>openfire_user <password>your_password ``` 最后,启动Openfire服务: ```bash sudo /opt/openfire/bin/startup.sh ``` 你可以在Web界面中进一步配置Openfire,通过浏览器访问`...
1、导入数据库2、使用idea打开项目3、更改jdk版本4、修改数据库连接池如果自己是mysql5版本,请修改配置:spring: datasource: driver-class-name: ...
JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Duser.timezone=...
To switch the time zone used for formatting, change the client O/S time zone setting and restart SQL Developer. 4.4 Known Globalization Issues This version of SQL Developer has the following ...
useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai,以便连接数据库。 本资源提供了 Jeesite 项目的安装和配置指南,涵盖了 SVN 服务端和...
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("Asia/Shanghai"), Locale.CHINA); ``` 2. **设置和获取日期和时间** `Calendar`提供了丰富的字段,如`YEAR`, `MONTH`, `DAY_OF_MONTH`等,可以...