Java获取UTC时间的方法详解
作者:番茄与西红柿 时间:2022-03-24 13:50:50
本文实例讲述了Java获取UTC时间的方法。分享给大家供大家参考,具体如下:
取得本地时间:
java.util.Calendar cal = java.util.Calendar.getInstance();
取得指定时区的时间:
java.util.TimeZone zone = java.util.TimeZone.getTimeZone(“GMT-8:00″);
java.util.Calendar cal = java.util.Calendar.getInstance(zone);
java.util.Calendar cal = java.util.Calendar.getInstance(java.util.Locale.CHINA);
您可以取得GMT 0的本地时间,但是又如何取得标准(相对于Java而言)的时间呢?
1. 取得本地时间:
java.util.Calendar cal = java.util.Calendar.getInstance();
2. 取得时间偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
3. 取得夏令时差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
4.从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
完整示例:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
public final class GetUTCTimeUtil {
private static DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm") ;
/**
* 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"<br />
* 如果获取失败,返回null
* @return
*/
public static String getUTCTimeStr() {
StringBuffer UTCTimeBuffer = new StringBuffer();
// 1、取得本地时间:
Calendar cal = Calendar.getInstance() ;
// 2、取得时间偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
// 3、取得夏令时差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
// 4、从本地时间里扣除这些差量,即可以取得UTC时间:
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
UTCTimeBuffer.append(year).append("-").append(month).append("-").append(day) ;
UTCTimeBuffer.append(" ").append(hour).append(":").append(minute) ;
try{
format.parse(UTCTimeBuffer.toString()) ;
return UTCTimeBuffer.toString() ;
}catch(ParseException e)
{
e.printStackTrace() ;
}
return null ;
}
/**
* 将UTC时间转换为东八区时间
* @param UTCTime
* @return
*/
public static String getLocalTimeFromUTC(String UTCTime){
java.util.Date UTCDate = null ;
String localTimeStr = null ;
try {
UTCDate = format.parse(UTCTime);
format.setTimeZone(TimeZone.getTimeZone("GMT-8")) ;
localTimeStr = format.format(UTCDate) ;
} catch (ParseException e) {
e.printStackTrace();
}
return localTimeStr ;
}
public static void main(String[] args) {
String UTCTimeStr = getUTCTimeStr() ;
System.out.println(UTCTimeStr);
System.out.println(getLocalTimeFromUTC(UTCTimeStr));
}
}
运行结果如下:
PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:
在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在线日期计算器/相差天数计算器:
http://tools.jb51.net/jisuanqi/datecalc
在线日期天数差计算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime
在线世界各地时间查询:
http://tools.jb51.net/zhuanhuanqi/worldtime
希望本文所述对大家java程序设计有所帮助。
标签:Java,UTC时间
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android7.0自动更新适配 包解析异常
2022-02-13 11:21:00
C#不重复输出一个数组中所有元素的方法
2022-07-02 14:25:58
![](https://img.aspxhome.com/file/2023/5/68085_0s.png)
Android填坑系列:在小米系列等机型上放开定位权限后的定位请求弹框示例
2022-03-29 15:15:49
![](https://img.aspxhome.com/file/2023/1/94281_0s.png)
Mybatis-Plus 全局配置无效的解决方案
2022-06-29 12:46:02
SpringBoot中发送QQ邮件功能的实现代码
2022-09-25 10:19:59
![](https://img.aspxhome.com/file/2023/8/72648_0s.png)
Springboot项目出现java.lang.ArrayStoreException的异常分析
2022-05-13 05:48:20
Java内存区域与内存溢出异常详解
2022-09-10 17:01:19
![](https://img.aspxhome.com/file/2023/5/69345_0s.png)
Java基础教程之理解Annotation详细介绍
2022-02-28 10:07:12
Zookeeper连接超时问题与拒绝连接的解决方案
2023-11-20 03:41:29
![](https://img.aspxhome.com/file/2023/3/78863_0s.png)
解析C#设计模式编程中外观模式Facade Pattern的应用
2021-08-08 05:10:37
![](https://img.aspxhome.com/file/2023/9/67549_0s.jpg)
使用java实现各种数据统计图(柱形图,饼图,折线图)
2022-03-09 22:12:50
![](https://img.aspxhome.com/file/2023/5/81365_0s.png)
使用SpringBoot跨系统调用接口的方案
2022-10-14 21:35:18
Java中Future和FutureTask的示例详解及使用
2023-01-29 11:48:42
![](https://img.aspxhome.com/file/2023/6/69296_0s.png)
C#装箱和拆箱原理详解
2021-12-29 16:07:26
![](https://img.aspxhome.com/file/2023/6/89736_0s.jpg)
Day14基础不牢地动山摇-Java基础
2023-03-21 09:04:46
![](https://img.aspxhome.com/file/2023/7/67617_0s.jpg)
Spring中校验器(Validator)的深入讲解
2022-03-05 11:58:35
![](https://img.aspxhome.com/file/2023/5/71245_0s.jpg)
java servlet 几种页面跳转的方法
2023-08-02 18:12:07
自定义注解和springAOP捕获Service层异常,并处理自定义异常操作
2023-04-04 05:26:04
![](https://img.aspxhome.com/file/2023/9/93149_0s.png)
学习SpringBoot容器功能及注解原理
2023-11-24 22:06:17
![](https://img.aspxhome.com/file/2023/4/59044_0s.png)
导入maven项目各个注解均报错的解决方案
2022-02-23 12:35:09
![](https://img.aspxhome.com/file/2023/0/71820_0s.jpg)