记录一次时间戳、夏令时、时区线上问题分析
问题描述
问题:输入时间戳、时区,返回一个带时区的时间字符串?
代码如下:
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。
记录一次时间戳、夏令时、时区线上问题分析相关推荐
- 如何做好线上问题分析
作者|贾淑华 转转作为一个互联网公司和电商运营平台,有独立的客服团队和问题反馈渠道,所以经常会收到一些用户的反馈和问题咨询,我们把这些统称为线上问题.做为一名新转转QA,不仅要关注业务支持,更要有全局 ...
- 用 gson 替换 fastjson 引发的线上问题分析
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 前言 Json 序列化框架存在的安全漏洞一直以来都是程序 ...
- 线上问题分析系列:数据库连接池内存泄漏问题的分析和解决方案
前言 本文来自好朋友彪哥整理,实际的生产问题分析,绝对干货~ 一.问题描述 上周五晚上主营出现部分设备掉线,经过查看日志发现是由于缓存系统出现长时间gc导致的.这里的gc日志的特点是: 1.gc时间都 ...
- 线上日志分析与其他一些脚本
对一些线上常用的脚本进行了一下总结和说明,免得以后忘记了~ 一·线上发布API集群的代码脚本: #!/bin/bash #Author CCChost=' 10.44.22.113 10.44.22. ...
- 线上问题分析诊断神器 Arthas(阿尔萨斯)
1.Arathas 介绍 官方文档:https://arthas.aliyun.com/doc/ GitHub 地址:https://github.com/alibaba/arthas Arthas ...
- mysql事务在提交后才发送给数据库执行_从一个线上问题分析binlog与内部XA事务提交过程...
1. 问题 业务上新增一条订单记录,用户接收到BinLake拉取的MySQL从库数据消息后,马上根据消息内的订单号去查询同一个MySQL从库,发现有些时候无法查到该条数据,等待大约500ms-1000 ...
- 一次共享内存引起的线上事故分析
一.前言 ipquery是一个用于根据ip查询对应信息(地址.天气等)的php模块,基于共享内存实现,为了做到更新数据时不重启php,我们引入了数据动态加载概念.如下图1设计: (图1) 在调用查询接 ...
- JVM内存管理机制线上问题排查
本文主要基于"深入java虚拟机"这本书总结JVM的内存管理机制,并总结了常见的线上问题分析思路.文章最后面是我对线上故障思考的ppt总结. Java内存区域 虚拟机运行时数据区如 ...
- Nodejs线上日志部署
Nodejs线上日志部署 Nodejs 被越来越多的使用到线上系统中,但线上系统没有日志怎么行呢. 一.forever记录日志 我的线上系统使用forever来启动服务,最开始就直接使用了foreve ...
- 测试金融软件出现线上bug的原因及解决方法
小编热衷于收集整理资源,记录踩坑到爬坑的过程.希望能把自己所学,实际工作中使用的技术.学习方法.心得及踩过的一些坑,记录下来.也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己 ...
最新文章
- 通过前序遍历和中序遍历构建二叉树 python实现
- 无家可归的iPhone
- 安装了libevent和memcached之后却发现在执行的时候出现了 error while loading shared libraries问题...
- 对整个矩阵元素进行计算:最大数、最小数、排序
- 组合商品和商品套餐(套装)的设计
- 深度学习-CNN提取图像特征
- ab压力测试php脚本,ab压力测试工具-批量压测脚本
- Kai - Golang实现的目标检测云服务
- 飞船向上飞pygame用k_up_十分钟就能用Python教你开发出一个迷你打飞机的游戏
- 要不要买保险,看这篇就够了
- Android开发 使用HBuilder的缓存方法
- Tp 引入 simple_html_dom.php
- php 横杠箭头,为什么我的箭头下面有一横线?
- 阿里云Dataworks平台应用
- 常用十六进制颜色对照表
- Mac自带浏览器safari怎么打开开发者选项
- 腾讯产品经理能力模型!
- 获取名字首字母,js
- html字体样式合集,HTML字体集合 - 重生之心动的个人空间 - OSCHINA - 中文开源技术交流社区...
- H5移动端实现手机震动效果