/** * 美国时间转中国时间 * @param date * @param oldZone * @param newZone * @return */public static Date changeTimeZone(Date date, TimeZone oldZone, TimeZone newZone) {    //转换为当时的美国时值    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    simpleDateFormat.setTimeZone(oldZone);    date = strToDate(simpleDateFormat.format(date));    //转换为当时的中国时区的值    simpleDateFormat.setTimeZone(newZone);    date = strToDate(simpleDateFormat.format(date));    return date;}

public static Date strToDate(String str){    Calendar calendar = Calendar.getInstance();    int year = Integer.parseInt(str.substring(0, 4));    int month = Integer.parseInt(str.substring(5, 7));    int day = Integer.parseInt(str.substring(8, 10));    int hour = Integer.parseInt(str.substring(11, 13));    int minute = Integer.parseInt(str.substring(14, 16));    int second = Integer.parseInt(str.substring(17, 19));    calendar.set(Calendar.YEAR, year);    calendar.set(Calendar.MONTH, month-1);    calendar.set(Calendar.DAY_OF_MONTH, day);    calendar.set(Calendar.HOUR_OF_DAY, hour);    calendar.set(Calendar.MINUTE, minute);    calendar.set(Calendar.SECOND, second);    return calendar.getTime();}

关键原理:

时间和日历是两个不同的概念。

Date代表的是一个绝对时间,也就是说,不管你在哪个时区,Date都是一样的,都是从1970年1月1日0点0分GMT时间起,到目前这一刻的毫秒数。所以,你第一段代码和第二段代码里面,得到的date对象所代表的时间其实是一样的。

而日历是人们对绝对时间的一种描述方法,例如某年某月某日几时几分几秒,这,随着你当前所处的时区和地区而不同。

你在观察date对象的时候,你肯定没有去看它的毫秒数,而是先把毫秒数转换成一个日历。你没有写出你是怎么把date转换成日历的,但假如你是用默认的Date.toString()的话,那么,这是根据当前的默认时区来把毫秒数转换成日历的。因此,你在第一段代码里没有修改默认时区,得到的还是美国时间。而在第二段代码里,因为修改了默认时区,所以虽然绝对时间没有变化,但是你转换得到的日历不一样了。

其实,如果你是要获取当前时间,那么直接用new Date()就可以了,跟你先创建一个Calendar对象,再指定一个时区后获取的date是完全一样的。只有在你需要把一个date用日历来表示的时候,才需要用到Calendar和TimeZone。

一些总结:

calendar.setTimeZone():你在calendar对象里面set的日期(日历)是对于哪个时区来说的
calendar.getTime():你说说的这个日期(日历),从1970(标准时区的这个日期)到现在过了多少秒
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
simpleDateFormat.format(date):按照时区,来对时间戳进行日期(日历)格式化

美国时间转中国时间,兼容夏令时相关推荐

  1. new date.gettime 与传入时间相差毫秒数不对_给女票解释为什么日本时间比中国时间快一个小时?...

    马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度. 如上图,飞机13:40 ...

  2. 漫话:如何给女朋友解释为什么日本时间比中国时间快一个小时

    ​ 马上就要五一劳动节放假了,忙碌了半年,准备趁着假期出去放松放松,于是开始准备行程.女朋友听说日本5月份可以看樱花,于是她在看去日本的航班.我在旁边默默的看了下我的信用卡额度.  如上图,飞机13 ...

  3. 内网电脑服务器时间修改,中国时间服务器(内网时间同步服务器)

    服务器是2000客户机是XP的,在此界面左下角点击更改日期和时间设置",你可以看看泰福特电子HJ210系列的NTP时间服务器. 局域网内的所有电脑时间都同步,和gps时间服务器,同步的地址写 ...

  4. 修改hadoop中yarn的webui中显示的任务时间为中国时间

    在${HADOOP_HOME}\share\hadoop\yarn目录下找到hadoop-yarn-common-x.x.x.jar,然后用winRAR打开: 打开以后结构如下: 进入webapps/ ...

  5. php时区改美东,美国东部时间与北京时间换算(美国中国时间换算器)

    美国东部时间1.29日 晚上七点到晚上八点 北京时间!! 艾薇儿在网上和fans. 目前的美国东部时间,比我们慢13个小时,比如现在我们是下午两点,那么他们是当天的凌晨1点.对于你说的东部时间晚上7点 ...

  6. 美国东部时间和中国的时差

    美国东部时间和中国的时差13个小时 因为美国东.中.西部与中国都有时差,且时间不一样,以美国东部时间为例:11月20日上午7点,中国时间为11月20日晚上20点.(西部16小时时差,中部14小时时差) ...

  7. php 芝加哥的放假时间,中国时间与美国芝加哥时间的时差

    [国外展会信息网] 去芝加哥参展,尤其是第一次到较遥远的地方参展,要注意中国时间与美国芝加哥时间的时差,做好行前规划,适当调整生物钟,以最好的状态来参加展会. 中国时间与芝加哥时间时差对照表 上表为中 ...

  8. 根据中国时间求美国时间

    问题描述: 北京时间与美国时间相差16个小时,即美国时间比北京时间慢16小时,输入n组北京时间,求出对应的美国时间. 输入:22018 07 02 08 222018 07 01 08 21 输出:2 ...

  9. UTC时间,GMT时间与夏令时冬令时详解

    转自:http://www.trader007.net/gmt-time-format-details/ 在我们交易时,特别是用的外盘是,经常会看到我们的系统时间与平台上的时间不一样,比如,我现在做的 ...

最新文章

  1. PCL点云配准(2)
  2. 基因序列算法:编辑距离( Levenshtein 距离)和LD算法
  3. 2020-11-8(activity状态以及任务栈)
  4. 某个软件调用目标异常_线上RPC远程调用频繁超时问题排查,大功臣Arthas
  5. 概率论-1.3 概率的性质(重点:可列与极限之间的互相转换)
  6. SAP建议客户将UI技术迁移到Fiori的六大原因
  7. 2013蓝桥杯-B-省赛-七、错误票据
  8. MapReduce作业提交到YARN上运行的步骤
  9. c/c++ 基金会(七) 功能覆盖,虚函数,纯虚函数控制
  10. Swift基础加强_跟我打500行
  11. java 53个关键字_java的保留(53个)关键字v11.docx
  12. 【bzoj2588/P2633】count on a tree —— LCA + 主席树
  13. 同花顺linux 行情软件,GitHub - zhnlks/puppet: 简单的股票程序化交易系统。核心模块基于同花顺和通达信金融终端。用户交流群:624585416...
  14. Ubuntu16.04中安装stlink驱动
  15. 基于LSTM的IMDB电影评论情感分析
  16. python棋类项目规划一——五子棋游戏策划书——项目一
  17. 牛客oj 习题11.1 找出直系亲属(前驱记录)
  18. 阿卡迪亚大学计算机专业好考吗,阿卡迪亚大学很烂吗
  19. 新东方校长俞敏洪给我们的告诫。
  20. 本地数据库IndexedDB - 初学者

热门文章

  1. bootstrap 中pre标签自动换行
  2. huya live source、douyu
  3. javascript和jquery实现页面元素显示/隐藏切换的方法
  4. 关于 TEST EAX,EAX
  5. 江苏农牧科技职业学院计算机应用技术,江苏农牧科技职业学院2021年招生计划...
  6. 在IDEA中.ignore插件的安装与使用
  7. 基于springboot实现秋月堂茶室用品茶具管理系统的设计与实现【附项目源码+论文说明】
  8. 什么是序列化和反序列化?
  9. 谷歌浏览器 Chrome for Mac 去除“由贵组织管理”
  10. 普通的Shader-物体移动身后残影的一种实现