700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java不同时区时间转换 Java不同时区(timezone)之间时间转换

java不同时区时间转换 Java不同时区(timezone)之间时间转换

时间:2019-02-27 10:40:48

相关推荐

java不同时区时间转换 Java不同时区(timezone)之间时间转换

最近出现一个问题是这样的 我们的系统在国外打印的日志时间由于时差关系和国内不一致 看起来不方便 希望国外的日志和国内保持一致 即 需要对不同时区的时间做转换调整 统一为国内时间。 一、关于时区的一些概念

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。