java-UTC时间戳格式化成年月日,UTC时间戳转成北京时间并格式化年月日

一、时间戳定义

1、UTC时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
2、北京时间戳是指1970年01月01日08时00分00秒起至现在的总秒数

北京时间 = UTC时间+8小时(这只是从时间意义上来讲)

二、应用场景

1、UTC时间戳,格式化成年月日时分秒

解释:如下代码是对UTC时间戳格式化,1659609420表示的是UTC是时间戳。
之前我一直认为无论是UTC时间戳还是北京时间戳 格式化成年月日,只需要下面代码就行了,实际是错误的
实际下面代码表示的是,把UTC时间戳格式化成了北京时间(格式化时默认是北京时区)

Long unixtimestamp = 1659609420L;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = simpleDateFormat.format(new Date(unixtimestamp * 1000));
System.out.println(format1);//2022-08-04 18:34:18

下面是UTC时间戳格式化的正确写法:

Long unixtimestamp = 1659609420L;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//指定了UTC时间
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String format1 = simpleDateFormat.format(new Date(unixtimestamp * 1000));
System.out.println(format1);//2022-08-04 10:34:18

2、UTC时间戳格式化年月日并转成北京时间的两种实现方式

/**
* 方式1
* 注:默认使用的是北京时区,无论是UTC时间戳还是北京时间戳,格式化后都是北京时间。
*/
Long unixtimestamp = 1659609420L;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = simpleDateFormat.format(new Date(unixtimestamp * 1000));
System.out.println(format1);//2022-08-04 18:34:18
/**
* 方式2
* 注:时间戳+8小时,格式化时指定UTC时区, 格式化后是北京时间。
*/
Long unixtimestamp = 1659609420L + 8*60*60;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String format1 = simpleDateFormat.format(new Date(unixtimestamp * 1000));
System.out.println(format1);//2022-08-04 18:34:18

三、总结

UTC时间戳转北京时间有两种方法
1、直接把UTC时间戳格式化成年月日,格式化时不设置时区,因为默认是北京时区。
2、把UTC时间戳加8小时后,格式化时区需要设置成UTC时区。

注意:如果您理解不了这个概念,就按照我给的上面的例子,直接套用就行了,慢慢品!!!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北漂IT民工_程序员_ZG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值