java utc转string_UTC的相互转换(java)

48304ba5e6f9fe08f3fa1abda7d326ab.png

SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

System.out.println("foo:"+foo.format(newDate()));

Calendar gc =GregorianCalendar.getInstance();

System.out.println("gc.getTime():"+gc.getTime());

System.out.println("gc.getTimeInMillis():"+newDate(gc.getTimeInMillis()));

//当前系统默认时区的时间:

Calendar calendar=newGregorianCalendar();

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=newDate();

//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:"+newDate(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时间+时区差=本地时间

48304ba5e6f9fe08f3fa1abda7d326ab.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值