问题描述

问题:输入时间戳、时区,返回一个带时区的时间字符串?

代码如下:

long timestamp = 1647489600000L; // 2022-03-15 12:00:00  Asia/Shanghai
String timeZoneName = "America/New_York";
Instant instant = Instant.ofEpochMilli(timestamp);
ZonedDateTime zonedDateTime = ZonedDateTime.of(LocalDateTime.ofInstant(instant, ZoneId.systemDefault()),
TimeZone.getTimeZone(timeZoneName).toZoneId());
System.out.println(zonedDateTime);ZonedDateTime zonedDateTime1 = ZonedDateTime.of(LocalDateTime.ofInstant(instant, ZoneId.systemDefault()),
TimeZone.getTimeZone("Asia/Shanghai").toZoneId());
System.out.println(zonedDateTime1);
复制代码

输出结果如下:

几个类简单说明一下:

  • Instant 可以将时间戳转换为本地日期/时间 LocalDateTime

  • JDK 8 之前,Java使用 java.util.TimeZone 来表示时区。而在JDK 8里分别使用了 ZoneId 表示时区,ZoneOffset 表示 UTC 的偏移量。

  • ZonedDateTime 是一个带时区的日期类。

夏令时(DST)

我们知道,纽约是 西五区,上海是 东八区 那么应该和我们的时间相差13 个小时(因为一个时区就是相差一个小时),但是我们得到的结论,确实是相差了 12 个小时,是不是有点怀疑自己。

再来看看,居然是 11 点,明明是相差 12 个小时,为什么说是比北京时间慢 14 小时这就是由于当前时间是夏令时导致的。【编程学习资料点击免费领取】

一个特殊的例子:

ZonedDateTime zonedDateTime2 = ZonedDateTime.ofInstant(instant,TimeZone.getTimeZone("GMT-05:00").toZoneId());
System.out.println(zonedDateTime2);
// 结果:2022-03-16T23:00-05:00[GMT-05:00]
复制代码

如果我们使用 GMT-05:00 来获取时区的时间,那么就不会触发夏令时,可能会和你想象的结果不同。

换句话说 America/New_York 可能是 GMT-05:00 也可能是 GMT-04:00 这个具体要看 LocalDateTime 是否在夏令时的时间区间内.

总结一下

1、如果按照用户侧,百度上的时间来算,由于现在是夏令时,所以 America/New_York 方式的时区才能正确的获取本地时间。

2、 具体的 Java 几个日期类的差别,大家可以看看参考资料中的文件。

3、 对于时区,时间戳,夏令时来说,相互转换有时候特别容易混淆。

①3000多本Python电子书有
②Python开发环境安装教程有
③Python400集自学视频有
④软件开发常用词汇有
⑤Python学习路线图有
⑥项目源码案例分享有

如果你用得到的话可以直接拿走,在我的QQ技术交流群里(技术交流和资源共享,广告勿入)可以自助拿走,群号是895937462。

记录一次时间戳、夏令时、时区线上问题分析相关推荐

  1. 如何做好线上问题分析

    作者|贾淑华 转转作为一个互联网公司和电商运营平台,有独立的客服团队和问题反馈渠道,所以经常会收到一些用户的反馈和问题咨询,我们把这些统称为线上问题.做为一名新转转QA,不仅要关注业务支持,更要有全局 ...

  2. 用 gson 替换 fastjson 引发的线上问题分析

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 Json 序列化框架存在的安全漏洞一直以来都是程序 ...

  3. 线上问题分析系列:数据库连接池内存泄漏问题的分析和解决方案

    前言 本文来自好朋友彪哥整理,实际的生产问题分析,绝对干货~ 一.问题描述 上周五晚上主营出现部分设备掉线,经过查看日志发现是由于缓存系统出现长时间gc导致的.这里的gc日志的特点是: 1.gc时间都 ...

  4. 线上日志分析与其他一些脚本

    对一些线上常用的脚本进行了一下总结和说明,免得以后忘记了~ 一·线上发布API集群的代码脚本: #!/bin/bash #Author CCChost=' 10.44.22.113 10.44.22. ...

  5. 线上问题分析诊断神器 Arthas(阿尔萨斯)

    1.Arathas 介绍 官方文档:https://arthas.aliyun.com/doc/ GitHub 地址:https://github.com/alibaba/arthas Arthas ...

  6. mysql事务在提交后才发送给数据库执行_从一个线上问题分析binlog与内部XA事务提交过程...

    1. 问题 业务上新增一条订单记录,用户接收到BinLake拉取的MySQL从库数据消息后,马上根据消息内的订单号去查询同一个MySQL从库,发现有些时候无法查到该条数据,等待大约500ms-1000 ...

  7. 一次共享内存引起的线上事故分析

    一.前言 ipquery是一个用于根据ip查询对应信息(地址.天气等)的php模块,基于共享内存实现,为了做到更新数据时不重启php,我们引入了数据动态加载概念.如下图1设计: (图1) 在调用查询接 ...

  8. JVM内存管理机制线上问题排查

    本文主要基于"深入java虚拟机"这本书总结JVM的内存管理机制,并总结了常见的线上问题分析思路.文章最后面是我对线上故障思考的ppt总结. Java内存区域 虚拟机运行时数据区如 ...

  9. Nodejs线上日志部署

    Nodejs线上日志部署 Nodejs 被越来越多的使用到线上系统中,但线上系统没有日志怎么行呢. 一.forever记录日志 我的线上系统使用forever来启动服务,最开始就直接使用了foreve ...

  10. 测试金融软件出现线上bug的原因及解决方法

    小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...

最新文章

  1. 通过前序遍历和中序遍历构建二叉树 python实现
  2. 无家可归的iPhone
  3. 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
  4. 对整个矩阵元素进行计算:最大数、最小数、排序
  5. 组合商品和商品套餐(套装)的设计
  6. 深度学习-CNN提取图像特征
  7. ab压力测试php脚本,ab压力测试工具-批量压测脚本
  8. Kai - Golang实现的目标检测云服务
  9. 飞船向上飞pygame用k_up_十分钟就能用Python教你开发出一个迷你打飞机的游戏
  10. 要不要买保险,看这篇就够了
  11. Android开发 使用HBuilder的缓存方法
  12. Tp 引入 simple_html_dom.php
  13. php 横杠箭头,为什么我的箭头下面有一横线?
  14. 阿里云Dataworks平台应用
  15. 常用十六进制颜色对照表
  16. Mac自带浏览器safari怎么打开开发者选项
  17. 腾讯产品经理能力模型!
  18. 获取名字首字母,js
  19. html字体样式合集,HTML字体集合 - 重生之心动的个人空间 - OSCHINA - 中文开源技术交流社区...
  20. H5移动端实现手机震动效果

热门文章

  1. 15_微信小程序之svg地图自定义组件编写
  2. 无线模块数据加密,反码校验,发送字符串ABCDEFGHIJKLMNOP LED频闪
  3. 暗色调Xshell配色方案
  4. 网站打开速度与服务器的关系,网站打开速度慢对SEO的影响
  5. [转贴] To love and to be loved
  6. 联想官方OEM分区制作
  7. 大数据学习完整学习路线
  8. 软件测试oracle怎么学,怎么自学软件测试?
  9. 泰拉瑞亚 服务器linux,泰拉瑞亚Linux主机打造指南
  10. 图像处理我是这样入门的------我的第一篇csdn博文