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) ...
随机推荐
- FutureTask与Fork/Join
在学习多线程的过程中,我们形成了一种思维习惯.那就是对于某个耗时操作不再做同步操作,让他分裂成一个线程之后执行下一步,而线程执行耗时操作.并且我们希望在我们需要它返回的时候再去调用它的结果集.好比我们 ...
- C#生成验证码类
using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;us ...
- FJWC2019 全连
题目描述 有n个音符,第i个音符会在第i个时刻来临 令第 i 个音符的准备时间为 ti 个单位时间,如果选择去点击第 i 个音符,那么就没法点击所有到来时刻在 (i−ti ,i+ti)中的音符. ...
- sql server 2008 R2 配置管理工具打不开
使用 sql server 配置管理工具是报如下错误: 解决方法: 1 找出 sqlmgmproviderxpsp2up.mof 这个文件的位置 2 以管理员身份运行 mofcomp &quo ...
- 翻译:WebAssembly简介:我们为什么要关心这个技术?
原文: https://tomassetti.me/introduction-to-webassembly/ WebAssembly简介:我们为什么要关心这个技术? 在对抗js的伟大战斗中有 ...
- elixir二进制模式匹配
for << << b1::size(2), b2::size(3), b3::size(3) >> <- "hello" >> ...
- python笔记08-----正则表达式
创建正则表达式对象 import re 常用匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.splital ...
- PHP之mb_convert_case使用
mb_convert_case (PHP 4 >= 4.3.0, PHP 5, PHP 7) mb_convert_case - Perform case folding on a string ...
- CentOS/Linux 解决 SSH 连接慢
现在连接linux服务器一般都是使用SSH远程连接的方式.最近新装了一台服务器,发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢.经过网上资料查询,大致是有以下几种原因: 1 ...
- 剑指offer(26-30)编程题
二叉搜索树与双向链表 字符串的排列 数组中出现次数超过一半的数字 最小的K个数 连续子数组的最大和 26.输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整 ...