Java获取UTC时间的方法详解

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • Java 判断一个时间是否在另一个时间段内

          需求:当时间在凌晨0点至0点5分之间程序不执行. 也就是实现判断当前时间点是否在00:00:00至00:05:00之间 方法: Java代码 : /** * 判断时间是否在时间段内 * * @param date * 当前时间 yyyy-MM-dd HH:mm:ss * @param strDateBegin * 开始时间 00:00:00 * @param strDateEnd * 结束时间 00:05:00 * @return */ public static boolean i

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • java8 LocalDate LocalDateTime等时间类用法实例分析

    本文实例讲述了java8 LocalDate LocalDateTime等时间类用法.分享给大家供大家参考,具体如下: 这篇文章主要是java8中新的Date和Time API的实战.新的Date和Time类是Java开发者社区千呼万唤始出来的.Java8 之前存在的Date类一直都受人诟病,很多人都会选择使用第三方的date库joda-time.Java8中的date和time api是jodatime的作者参与开发的,实现了JSR310的全部内容.这些新的api都在包java.time下.

  • java_时间戳与Date_相互转化的实现代码

    1.时间戳的定义 时间戳是指文件属性里的创建.修改.访问时间. 数字时间戳技术是数字签名技术一种变种的应用.在电子商务交易文件中,时间是十分重要的信息.在书面合同中,文件签署的日期和签名一样均是十分重要的防止文件被伪造和篡改的关键性内容.数字时间戳服务(DTS:digital time stamp service)是网上电子商务安全服务项目之一,能提供电子文件的日期和时间信息的安全保护. 时间戳(time-stamp)是一个经加密后形成的凭证文档,它包括三个部分: 需加时间戳的文件的摘要(dig

  • java计算两个日期中间的时间

    java计算两个日期中间的时间 其中在数据库中有一个字段为datetime类型,想要计算两个日期之间过了多少天 多少小时 多少分钟. 思路为把时间换算为毫秒(与协调世界时 1970 年 1 月 1 日午夜之间的时间差(以毫秒为单位测量).然后利用毫秒的加减计算. 计算如下: public static String getDays(Date date){ Calendar cal=Calendar.getInstance(); cal.setTime(date); long oldTime=ca

  • Java使用DateFormatter格式化日期时间的方法示例

    本文实例讲述了Java使用DateFormatter格式化日期时间的方法.分享给大家供大家参考,具体如下: Java版本:1.8开始 import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; /** * Created by Fra

  • Java图片中显示当前时间的方法 原创

    Graphics2d 类提供了 drawString() 方法,实用该方法可以实现图形上下文的文本绘制,从而实现在图片上显示文字的功能.下面我们来看看其具体用法 语法如下: drawString(String str,int x,int y); 或 drawString(String str,float x, float y); str:要绘制的文本字符串: x:绘制字符串的水平起始位置: y绘制字符串的垂直起始位置. 此两种方法唯一的不同点就是使用的 x 和 y 参数的类型不同.   实例1:

  • Java获取UTC时间的方法详解

    本文实例讲述了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);

  • JavaScript获取服务器时间的方法详解

    本文实例讲述了JavaScript获取服务器时间的方法.分享给大家供大家参考,具体如下: Javascript是运行在客户端的脚本,我们一般都用new Date()来获取当前时间,但是得到的是客户端的时间,客户端时间是随意更改的,如果要做一个产品发布倒计时的话,客户端时间一改,就要闹笑话了.业务中需要用到服务器时间的场景还有很多,那么仅仅通过js怎么拿到服务器时间呢?事实上,只需要一个ajax请求就搞定,通过读取XMLHttpRequest对象的响应头里面的时间戳得到当前服务器时间! 原理就是这

  • JAVA获取CLASSPATH路径的方法详解

    ClassLoader 提供了两个方法用于从装载的类路径中取得资源: public URL getResource (String name); public InputStream getResourceAsStream (String name); 这里name是资源的类路径,它是相对与"/"根路径下的位置.getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据. 但是真正使用的不是Cl

  • Java获取网页数据步骤方法详解

    在很多行业当中,我们需要对行业进行分析,就需要对这个行业的数据进行分类,汇总,及时分析行业的数据,对于公司未来的发展,有很好的参照和横向对比.面前通过网络进行数据获取是一个很有效而且快捷的方式. 首先我们来简单的介绍一下,利用java对网页数据进行抓取的一些步骤,有不足的地方,还望指正,哈哈.屁话不多说了. 其实一般分为以下步骤: 1:通过HttpClient请求到达某网页的url访问地址(特别需要注意的是请求方式) 2:获取网页源码 3:查看源码是否有我们需要提取的数据 4:对源码进行拆解,一

  • Java Redis配置Redisson的方法详解

    目录 需要的Maven application-redis.yml Session共享配置 Redisson配置 其他Redisson的Config配置方式 需要的Maven <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <e

  • Java AtomicInteger类的使用方法详解

    首先看两段代码,一段是Integer的,一段是AtomicInteger的,为以下: public class Sample1 { private static Integer count = 0; synchronized public static void increment() { count++; } } 以下是AtomicInteger的: public class Sample2 { private static AtomicInteger count = new AtomicIn

  • Java并发编程之Exchanger方法详解

    简介 Exchanger是一个用于线程间数据交换的工具类,它提供一个公共点,在这个公共点,两个线程可以交换彼此的数据. 当一个线程调用exchange方法后将进入等待状态,直到另外一个线程调用exchange方法,双方完成数据交换后继续执行. Exchanger的使用 方法介绍 exchange(V x):阻塞当前线程,直到另外一个线程调用exchange方法或者当前线程被中断. x : 需要交换的对象. exchange(V x, long timeout, TimeUnit unit):阻塞

  • Java实现字符串切割的方法详解

    今天给大家介绍一个小知识点,但是会非常的实用,就是平时我们写Java代码的时候,如果要对字符串进行切割,我们巧妙的运用一些技巧,可以把性能提升5~10倍.下面不说废话,直接来给大家上干货! 工作中常用的split()切割字符串效率高吗? 首先,我们用下面的一段代码,去拼接出来一个用逗号分隔的超长字符串,把从0开始一直到9999的每个数字都用逗号分隔,拼接成一个超长的字符串,以便于我们可以进行实验,代码如下所示: public class StringSplitTest { public stat

  • Java查看线程运行状态的方法详解

    目录 一.查看线程的运行状态 二.解题思路 三.代码详解 一.查看线程的运行状态 题目 线程有以下6种状态:新建.运行.阻塞.等待.计时等待和终止. new新线程时,线程处于新建 状态. 调用start()方法时,线程处于运行状态. 当线程需要获得对象的内置锁,而该锁正被其他线程拥有,线程处于阻塞状态. 线程等待其他线程通知调度表可以运行时,该线程处于等待状态. 对于一些含有时间参数的方法,如 Thread 类的 sleep()方法,可以使线程处于计时等待状态. 当run()方法运行完毕或出现异

  • java 中enum的使用方法详解

    java 中enum的使用方法详解 enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中. 下面是我在使用 enum 过程中的一些经验和总结. 原始的接口定义常量 public interface IConstants { String MON = "Mon"; String TUE = "Tue"; String WED = "Wed"; String THU = "Thu

随机推荐