zoukankan      html  css  js  c++  java
  • UTC的相互转换(java)

     
    复制代码
            SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            System.out.println("foo:"+foo.format(new Date()));
            
            Calendar gc = GregorianCalendar.getInstance();
            System.out.println("gc.getTime():"+gc.getTime());
            System.out.println("gc.getTimeInMillis():"+new Date(gc.getTimeInMillis()));
            
            //当前系统默认时区的时间:
            Calendar calendar=new GregorianCalendar();
            System.out.print("时区:"+calendar.getTimeZone().getID()+"  ");
            System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));
            //美国洛杉矶时区
            TimeZone tz=TimeZone.getTimeZone("America/Los_Angeles");
            //时区转换
            calendar.setTimeZone(tz);
            System.out.print("时区:"+calendar.getTimeZone().getID()+"  ");
            System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE));
            Date time=new Date();
            
            //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标准时间。
            System.out.println("UTC:"+new Date(cal.getTimeInMillis()));
            
            Calendar calendar1 = Calendar.getInstance();
            TimeZone tztz = TimeZone.getTimeZone("GMT");       
            calendar1.setTimeZone(tztz);
            System.out.println(calendar.getTime());
            System.out.println(calendar.getTimeInMillis()); 

    ---------------------------------------------------------------------------------------------
    问题小结(18)-UTC时间及时区获取
    
    

    UTC时间:世界统一时间,世界标准时间又称格林尼治平时或格林尼治时间。

    
    

    可以采用多种方法获取,这里只简单介绍两种:直接获取零时区时间、根据本地时间计算得出。

    
    

    方法一、直接获取零时区时间:

    
    

    [java] 
    DateFormat dateFormatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    TimeZone pst = TimeZone.getTimeZone("Etc/GMT+0");   
     
    Date curDate = new Date();   
    dateFormatter.setTimeZone(pst);   
    String str=dateFormatter.format(curDate);//这就是我们想要获取的值 

    
    

            DateFormat dateFormatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            TimeZone pst = TimeZone.getTimeZone("Etc/GMT+0"); 
     
            Date curDate = new Date(); 
            dateFormatter.setTimeZone(pst); 
            String str=dateFormatter.format(curDate);//这就是我们想要获取的值方法二、根据本地时间计算得出:

    
    

    [java] 
       Calendar cal = Calendar.getInstance(Locale.getDefault()); 
    int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET); 
    int dstOffset = cal.get(java.util.Calendar.DST_OFFSET); 
    cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset)); 
    String str=DateFormat.format("yyyy'-'MM'-'dd' 'kk':'mm':'ss' '", cal);//这就是我们想要获取的值 

    
    

               Calendar cal = Calendar.getInstance(Locale.getDefault());
            int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
            int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
            cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
            String str=DateFormat.format("yyyy'-'MM'-'dd' 'kk':'mm':'ss' '", cal);//这就是我们想要获取的值时区获取:

    
    

            String Zone=TimeZone.getDefault().toString();//这种方法获取的并不能得到我们想要的东西
            TimeZone.getDefault().getID()//获取的仅仅是个时区里的城市名

    
    

            我们想得到能够直接标识东八区(+8)或者西七区(-7)之类的东西,这只能是我们通过时间的便宜量来计算获得,方法如下:

    
    

    [java]
    Calendar cal = Calendar.getInstance(Locale.getDefault()); 
    int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET); 
    int zone=zoneOffset/60/60/1000;//时区,东时区数字为正,西时区为负 

    
    

        Calendar cal = Calendar.getInstance(Locale.getDefault());
        int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
        int zone=zoneOffset/60/60/1000;//时区,东时区数字为正,西时区为负
    PS:UTC时间+时区差=本地时间

    
    
    复制代码
  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/xgjblog/p/3938939.html
Copyright © 2011-2022 走看看