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

UTC的相互转换(java)的更多相关文章
- 微博地址url(id)与mid的相互转换 Java版
原理: 新浪微博的URL都是如:http://weibo.com/2480531040/z8ElgBLeQ这样三部分. 第一部分(绿色部分)为新浪微博的域名,第二部分(红色部分)为博主Uid,第三部分 ...
- Java 中byte 与 char 的相互转换 Java基础 但是很重要
char转化为byte: public static byte[] charToByte(char c) { byte[] b = new byte[2]; b[0] = ...
- Java笔记10-Object包装类型字符串
提纲: 1.java.lang.0bject中常用方法介绍 2.基本类型对应的包装类型的介绍 以及基本类型和包装类型之间的相互转换 3.java.lang.String 字符串处理类 java.lan ...
- 常用的Java代码汇总
1. 字符串有整型的相互转换 Java 1 2 <strong>Stringa=String.valueOf(2); //integer to numeric ...
- java AES加密、解密(兼容windows和linux)
java AES加密.解密 CreationTime--2018年7月14日10点06分 Author:Marydon 1.准备工作 updateTime--2018年8月10日15点28分 up ...
- java 16进制与字符串直接相互转换
java 16进制与字符串直接相互转换 CreationTime--2018年7月12日09点39分 Author:Marydon 1.16进制转换成字符串 /** * 16进制直接转换成为字符串 ...
- java byte数组与String互转
java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String ...
- java 将数字转成成16进制
java 将数字转成成16进制 CreationTime--2018年6月11日17点11分 Author:Marydon 1.前提 数字必须是byte类型,即[-128,127] 2.代码实现 ...
- json与java bean对象转换
第一步:引入fastjson的依赖jar包 注:如果引入此版本的依赖,导致项目不能启动(报错:找不到启动类);那么可以换一个版本的fastjson即可. 给出文字版: <!-- fastjson ...
随机推荐
- sprytabbedpanels.js库之在页面中插入Tabbed Panels
向页面加入sprytabbedpanels.js文件.<script src="SpryAssets/SpryTabbedPanels.js" type="text ...
- Shell日期时间和时间戳的转换
Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.ta ...
- CKEditor (Toolbar Definition)工具栏自定义配置
JS是大小写敏感的, 在设置配置文件的时候需要注意 以CKEditor 4为基础我们可以通过两种方式配置CKEditor的工具栏,一种是是通过config.js配置文件设置, 另一种是IN-PAGE方 ...
- Unity3D研究院之静态自动检查代码缺陷与隐患
原地址:原地址:http://www.xuanyusong.com/archives/2828 代码缺陷和代码错误的最大区别是,代码缺陷不影响游戏编译,而代码错误编译都不通过.但是代码缺陷会影响游戏发 ...
- Sqli-labs less 15
Less-15 本关没有错误提示,那么我们只能靠猜测进行注入.这里我直接从源代码中看到了sql语句 @$sql="SELECT username, password FROM users W ...
- Chapter 6面向对象
1.Python中预定义的函数在定义的时候有一种很特别的形式,即是函数名是小写,并且函数名前后分别有两个下划线.同样的,在对象中也有预定义的方法,例如所有对象的基类object中的__new__(), ...
- sql Server2005 master损坏处理
一.准备条件 a) 假设Master 数据库Hung:关闭SQL Server 服务(关闭MSSQLSERVER,SQL Server Agent其他的没有影响),然后剪切C:/Pro ...
- HDU 2672 god is a girl (字符串处理,找规律,简单)
题目 //1,1,2,3,5,8,13,21,34,55…… //斐波纳契数列 #include<math.h> #include<stdio.h> #include<s ...
- zoj Fibonacci Numbers ( java , 简单 ,大数)
题目 //f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2) import java.io.*; import java.util.*; imp ...
- HDU 2084 数塔(动态规划)
数塔 http://acm.hdu.edu.cn/showproblem.php?pid=2084 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描 ...