Java獲取UTC時(shí)間的方法詳解
本文實(shí)例講述了Java獲取UTC時(shí)間的方法。分享給大家供大家參考,具體如下:
取得本地時(shí)間:
java.util.Calendar cal = java.util.Calendar.getInstance();
取得指定時(shí)區(qū)的時(shí)間:
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的本地時(shí)間,但是又如何取得標(biāo)準(zhǔn)(相對(duì)于Java而言)的時(shí)間呢?
1. 取得本地時(shí)間:
java.util.Calendar cal = java.util.Calendar.getInstance();
2. 取得時(shí)間偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
3. 取得夏令時(shí)差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
4.從本地時(shí)間里扣除這些差量,即可以取得UTC時(shí)間:
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時(shí)間,類型為字符串,格式為"yyyy-MM-dd HH:mm"<br />
* 如果獲取失敗,返回null
* @return
*/
public static String getUTCTimeStr() {
StringBuffer UTCTimeBuffer = new StringBuffer();
// 1、取得本地時(shí)間:
Calendar cal = Calendar.getInstance() ;
// 2、取得時(shí)間偏移量:
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
// 3、取得夏令時(shí)差:
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
// 4、從本地時(shí)間里扣除這些差量,即可以取得UTC時(shí)間:
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時(shí)間轉(zhuǎn)換為東八區(qū)時(shí)間
* @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));
}
}
運(yùn)行結(jié)果如下:

PS:這里再為大家推薦幾款時(shí)間及日期相關(guān)工具供大家參考使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線日期計(jì)算器/相差天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/datecalc
在線日期天數(shù)差計(jì)算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
Unix時(shí)間戳(timestamp)轉(zhuǎn)換工具:
http://tools.jb51.net/code/unixtime
在線世界各地時(shí)間查詢:
http://tools.jb51.net/zhuanhuanqi/worldtime
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
基于JSON實(shí)現(xiàn)傳輸byte數(shù)組過程解析
這篇文章主要介紹了基于JSON實(shí)現(xiàn)傳輸byte數(shù)組過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
springboot使用ThreadPoolTaskExecutor多線程批量插入百萬(wàn)級(jí)數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了springboot利用ThreadPoolTaskExecutor多線程批量插入百萬(wàn)級(jí)數(shù)據(jù),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02
Java中Object轉(zhuǎn)換為L(zhǎng)ist類型的實(shí)現(xiàn)方法
這篇文章主要介紹了Java中Object轉(zhuǎn)換為L(zhǎng)ist類型的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Java?使用geotools讀取tiff數(shù)據(jù)的示例代碼
這篇文章主要介紹了Java?通過geotools讀取tiff,一般對(duì)于tiff數(shù)據(jù)的讀取,都會(huì)借助于gdal,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Java中Elasticsearch 實(shí)現(xiàn)分頁(yè)方式(三種方式)
Elasticsearch是用Java語(yǔ)言開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是一種流行的企業(yè)級(jí)搜索引擎,這篇文章主要介紹了Elasticsearch實(shí)現(xiàn)分頁(yè)的3種方式,需要的朋友可以參考下2022-07-07
Spring Boot Actuator執(zhí)行器運(yùn)行原理詳解
這篇文章主要介紹了Spring Boot Actuator執(zhí)行器運(yùn)行原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Spring Boot Admin微服務(wù)應(yīng)用監(jiān)控的實(shí)現(xiàn)
這篇文章主要介紹了Spring Boot Admin微服務(wù)應(yīng)用監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段
這篇文章主要介紹了Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java并發(fā)編程中的生產(chǎn)者與消費(fèi)者模型簡(jiǎn)述
這篇文章主要介紹了Java并發(fā)編程中的生產(chǎn)者與消費(fèi)者模型簡(jiǎn)述,多線程并發(fā)是Java編程中最終要的部分之一,需要的朋友可以參考下2015-07-07
SpringBoot集成ShedLock實(shí)現(xiàn)分布式定時(shí)任務(wù)的示例代碼
ShedLock 是一個(gè) Java 庫(kù),通常用于分布式系統(tǒng)中,確保定時(shí)任務(wù)(Scheduled Tasks)在集群環(huán)境下只被某一個(gè)實(shí)例執(zhí)行一次,本文給大家介紹了SpringBoot集成ShedLock實(shí)現(xiàn)分布式定時(shí)任務(wù)的示例代碼,需要的朋友可以參考下2024-12-12

