Java 时区转换(UTC+8 到 UTC 等等)
前言:需要做时区转换,知道北京为UTC+8,东京为UTC+9,世界标准时间为UTC,所以下面的代码是只需要知道时区是+8还是+9还是0就可以了,不需要使用"CTT"、 "Asia/Shanghai"这种形式。
java 代码:其实是使用时区 GMT+08:00 这样的格式
/**
* 时区转换
* @param time 时间字符串
* @param pattern 格式 "yyyy-MM-dd HH:mm"
* @param nowTimeZone eg:+8,0,+9,-1 等等
* @param targetTimeZone 同nowTimeZone
* @return
*/
public static String timeZoneTransfer(String time, String pattern, String nowTimeZone, String targetTimeZone) {
if(StringUtils.isBlank(time)){
return "";
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT" + nowTimeZone));
Date date;
try {
date = simpleDateFormat.parse(time);
} catch (ParseException e) {
logger.error("时间转换出错。", e);
return "";
}
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT" + targetTimeZone));
return simpleDateFormat.format(date);
}
单测代码:
@Test
public void testTimeZoneTransfer(){
String result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "+8", "0");
Assert.assertEquals("转换错误", "2018-07-03 07:43", result); result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "+9", "0");
Assert.assertEquals("转换错误", "2018-07-03 06:43", result); result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "-1", "0");
Assert.assertEquals("转换错误", "2018-07-03 16:43", result); result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "+8", "+9");
Assert.assertEquals("转换错误", "2018-07-03 16:43", result); result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "+0", "+8");
Assert.assertEquals("转换错误", "2018-07-03 23:43", result); result = DateUtil.timeZoneTransfer("2018-07-03 15:43", "yyyy-MM-dd HH:mm", "+0", "0");
Assert.assertEquals("转换错误", "2018-07-03 15:43", result);
}
Java 时区转换(UTC+8 到 UTC 等等)的更多相关文章
- Java 时区之间时间转换
SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(&qu ...
- Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。
通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...
- PHP中关于时间(戳)、时区、本地时间、UTC时间等的梳理
PHP中关于时间(戳).时区.本地时间.UTC时间等的梳理 在PHP开发中,我们经常会在时间问题上被搞糊涂,比如我们希望显示一个北京时间,但是当我们使用date函数进行输出时,却发现少了8个小时.几乎 ...
- PHP中关于时间、时区、本地时间、UTC时间、GMT时间、时间戳等知识的梳理
在PHP开发中,我们经常会在时间问题上被搞糊涂,比如我们希望显示一个北京时间,但是当我们使用date函数进行输出时,却发现少了8个小时.几乎所有的php猿类都必须对php中几个重要的时间转换等方法进行 ...
- Java – Display all ZoneId and its UTC offset
package com.mkyong.date; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.Z ...
- java中的时区转换
目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...
- Java中的Date和时区转换
1.Date中保存的是什么 在java中,只要我们执行 Date date = new Date(); 就可以得到当前时间.如: Date date = new Date(); System.out. ...
- Java 时间转换问题总结
这几天开发中遇到时间转换出错的问题,特总结如下: ========================================================================= ...
- Time Zone 【模拟时区转换】(HDU暑假2018多校第一场)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6308 Time Zone Time Limit: 2000/1000 MS (Java/Others) ...
随机推荐
- Python(简单计算器)
参考:https://www.cnblogs.com/alex3714/articles/5169958.html import re ret = re.search('\([^()]+\)','(1 ...
- Jmeter使用吞吐量控制器实现不同的用户操纵不同的业务
一.需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章. 二.脚本实现 80%的用户查看文章 20%用户创建文章 根据post_i ...
- mysql随机取出若干条记录的实用方法
1.常见的方法 ; 这种方法可以随机取得数据,但是如果表比较大,数据量很多的时候会很耗时. 2.优化后的方式 ) as t ); 分析,首先根据条件筛选出要选的数据,然后随机排序取出要的条数的id , ...
- ORACLE 动态执行SQL语句
本文转自 http://zhaisx.iteye.com/blog/856472 Oracle 动态SQL Oracle 动态SQL有两种写法:用 DBMS_SQL 或 execute immedia ...
- ReactNative常用组件库 react-native-camera 相机
通过react-native-camera调用原生相机,及自定义样式 GitHub地址: https://github.com/react-native-community/react-native- ...
- Servlet+JSP+JDBC设计实现图书系统——管理功能实现
写在前面,之前由于种种原因博客好久没有更新.最近打算重拾JavaWeb,所以从头开始,先用servlet+jdbc+bootstrap最基础的代码实现一个图书系统.考虑有管理员端+用户端,项目完成后会 ...
- 【性能测试】:监控Mysql数据库方式
1, 进入到/etc目录下,打开my.cnf文件,在文件最后添加几行 slow_query_log = ON //打开慢查询开关 slow_q ...
- PHP获取时间比实际时间少8小时的问题
有两方法 1.我们写PHP程序在获取时间时,人为加上8小时(这种方法是最实用也是最土的方法) 2.如果直接获取正确时间,也可修改PHP的配置文件,即查找php.ini文件 修改方法:在php.ini文 ...
- springboot项目:Redis缓存使用
保存Redis 第一步:启动类中加入注解 @EnableCaching package com.payease; import org.springframework.boot.SpringAppli ...
- RealVNC
使用Linux服务器,在一般情况下是不太用桌面环境的.不过现在我想着开发用Linux,如使用Pycharm这种IDE,还是很方便的.这样还是需要桌面环境的,然而我们位置不多,就将服务器的屏幕摘下了,那 ...