• Java获得UTC时间


    在Java语言中,您可以通过java.util.Calendar类取得一个本地时间或者指定时区的时间实例,如下:

    取得本地时间:
             

    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));

    之后,您再通过调用cal.get(int x)或cal.getTimeInMillis()方法所取得的时间即是UTC标准时间。

      详细的代码如下:

    package com.feima.afei.util;
    
    package com.feima.afei.util;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.TimeZone;
    
    /**
     * 
     * @author Javen
     *
     */
    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));
        }
    
    }
  • 相关阅读:
    npm 5.4.2 更新后就不能用了
    Node.js 被分叉出一个项目 — Ayo.js,肿么了
    页面缓存之Meta http-equiv属性详解
    Javascript 浮点计算问题分析与解决
    详解 Cookie 纪要(vue.cookie,jquery.cookie简化)
    Cookie 基本操作
    HTML5上传图片预览
    location.href跳转测试
    ios中iframe的scroll滚动事件替代方法
    JS数组API
  • 原文地址:https://www.cnblogs.com/zyw-205520/p/4632490.html
Copyright © 2020-2023  润新知