最近出现一个问题是这样的 我们的系统在国外打印的日志时间由于时差关系和国内不一致 看起来不方便 希望国外的日志和国内保持一致 即 需要对不同时区的时间做转换调整 统一为国内时间。 一、关于时区的一些概念
1.1 什么是时区
timezone 即由于世界各国家与地区经度不同 地方时也有所不同 按照经度将全球划分为24个时区。
时区有相应的英文字母缩写 例如GMT,UTC,CST等 常见的时区 具体参考 这里。
1.2 什么是夏令时
通俗易懂的解释就是 夏令时开始的时候 大家在夜里2点把表往前调一个小时 即本来两点 被你手动调成了三点 如果你七点起床 那你那天晚上就会少睡一个小时 为什么这么做是因为夏天的时候7点其实天已经亮了 这样你到了第二天晚上8点 其实是之前的7点 就应该睡觉了 这样就可以节省电了 所以夏令时叫 Daylight Saving Time DST 这篇文章讲了为什么要有夏令时 什么时候去修改表的时间 为什么是晚上2点修改 反对夏令时 还有人写paper说夏令时没什么用。
二、如何在不同时区之间转换时间
上部分分析了不同时区 还有夏令时的区别 即我们在转换时区的时候要考虑这两个问题 基本思路是
获取到源时区相对于GMT的差距 考虑夏令时 。获取到目的时区相对于GMT的差距 考虑夏令时 。用当前的时间 – 源差距 目的差距。
代码如下所示
public class TimeZoneTransform {
private static String dateTransformBetweenTimeZone(Date sourceDate, DateFormat formatter,
TimeZone sourceTimeZone, TimeZone targetTimeZone) {
Long targetTime sourceDate.getTime() – sourceTimeZone.getRawOffset() targetTimeZone.getRawOffset();
return getTime(new Date(targetTime), formatter);
private static String getTime(Date date, DateFormat formatter) {
return formatter.format(date);
private static String getTimeZone() {
Calendar cal Calendar.getInstance();
// getOffset will access to offset and contains DaylightTime
int timeZone cal.getTimeZone().getOffset(System.currentTimeMillis()) / (3600000);
if (timeZone 0) {
return String.valueOf( timeZone);
return String.valueOf(timeZone);
public static String getGMTTime(Date date, SimpleDateFormat formatter) {
TimeZone srcTimeZone TimeZone.getTimeZone( GMT getTimeZone());
TimeZone destTimeZone TimeZone.getTimeZone( GMT 8
return dateTransformBetweenTimeZone(date, formatter, srcTimeZone, destTimeZone);
public static void main(String[] args) {
System.out.println(getGMTTime(new Date(System.currentTimeMillis()), new SimpleDateFormat()));
三、Java中关于时间处理的类
关于Date Calendar LocalDate/LocalTime的介绍文章。
参考资料
Java时区处理之Date,Calendar,TimeZone,SimpleDateFormat
[完]
pip 安装使用 ImportError: No module named setuptools 解决方法
78210
责任编辑:xiaochao
今天的文章java不同时区时间转换,Java不同时区(timezone)之间时间转换分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/28683.html