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时间+时区差=本地时间


时间: 2024-11-08 09:40:30

UTC的相互转换(java)的相关文章

微博地址url(id)与mid的相互转换 Java版

原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分(蓝色)为一串貌似随机的字符串. 如果通过方法能计算出蓝色字串与返回的数组里的对应关系则好解决多了. 首先分组蓝色字串 ,从后往前4个字符一组,得到以下三组字符:z8ElgBLeQ 将它们分别转换成62进制的数值则为 35, 2061702, 8999724  将它们组合起来就是一串 3520617

常用的Java代码汇总

1. 字符串有整型的相互转换 Java 1 2 <strong>Stringa=String.valueOf(2);   //integer to numeric string inti=Integer.parseInt(a);//numeric string to an int </strong> 2. 向文件末尾添加内容 Java 1 2 3 4 5 6 7 8 9 10 11 <strong>BufferedWriter out=null; try{ out=ne

Java笔记10-Object包装类型字符串

提纲: 1.java.lang.0bject中常用方法介绍 2.基本类型对应的包装类型的介绍 以及基本类型和包装类型之间的相互转换 3.java.lang.String 字符串处理类 java.lang.StringBuilder ->包装类型中的方法的使用 ->字符串当中的方法的使用 ->基本类型 包装类型以及字符串还有StringBuilder 之间的相互转换---------------------------------------------------------------

java byte数组与String互转

java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String.getBytes(charset)实现 String website = "http://www.cnblogs.com/Marydon20170307"; // String-->byte[],并指定字符集 byte[] b = website.getBytes("utf-

java 16进制与字符串直接相互转换

java 16进制与字符串直接相互转换 CreationTime--2018年7月12日09点39分 Author:Marydon 1.16进制转换成字符串 /** * 16进制直接转换成为字符串 * @explain * @param hexStr 16进制字符串 * @return String */ public static String fromHexString(String hexString) { // 用于接收转换结果 String result = ""; // 转

java项目小手册

集合了一些常用的小片段 1. 字符串有整型的相互转换 Java代码 String a = String.valueOf(2); //integer to numeric string int i = Integer.parseInt(a); //numeric string to an int 2. 向文件末尾添加内容 Java代码 BufferedWriter out = null; try { out = new BufferedWriter(new FileWriter("filename

Java 常用API(二)

目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar类 5. System类 6. StringBuilder类 String类的原理 StringBuilder类的原理 StringBuilder的构造方法 StringBuilder的常用方法 7. 包装类 概述 装箱与拆箱(以 int 类型为例) 自动装箱与自动拆箱 基本类型与字符串类型之间的相

由浅到深学习JDBC二

封装数据访问对象 1:通过分析总结,所有对数据库表的操作都可以总结为通过JDBC对表的增删改查,为了减少冗余代码, 使得每次操作表时,不必都写JDBC程序,所以将对一张表的所有数据访功能,封装在数据访问对象 (Data Access Object)中,方便调用. 2:为了方便数据传输,往往会将java程序中所有相关操作的零散字段值,封装成一个实体对象--entity. 实体封装原则: 表----实体类 字段---属性 实现序列化 提供set,get方法. 以下代码就是利用Dao数据访问对象写出的

[转]使用自定义HttpMessageConverter对返回内容进行加密

今天上午技术群里的一个人问” 如何在 Spring MVC 中统一对返回的 Json 进行加密?”. 大部分人的第一反应是通过 Spring 拦截器(Interceptor)中的postHandler方法处理.实际这是行不通的,因为当程序运行到该方法,是在返回数据之后,渲染页面之前,所以这时候 Response 中的输出流已经关闭了,自然无法在对返回数据进行处理. 其实这个问题用几行代码就可以搞定,因为 Spring 提供了非常丰富的扩展支持,无论是之前提到的Interceptor和Method