电脑@如何处理计算机中的日期和时间问题?( 三 )
美国使用夏令时时 , 纽约时间按照西四区计算 , 即:GMT-4 。 这段时间北京时间比纽约时间快 12 个小时 , 夏令时结束后 , 纽约时间又恢复到西五区 GMT-5 。
由于各国规定有所差异 , 所以夏令时计算非常复杂 。 当我们需要计算夏令时时 , 应尽量使用 Java 库提供的类 , 避免自己计算夏令时 。
三、旧 API Java 标准库提供了两套关于时间和日期的 API:
- 旧 API:位于 java.util 包中 , 里面主要有 Date、Calendar、TimeZone 类
- 新 API:位于 java.time 包中 , 里面主要有 LocalDateTime、ZonedDateTime、ZoneId 类
3.1. DateDate 类用于存储日期和时间 , 查看其源码可以发现 , 它保存了一个 long 类型的时间戳 。 时间戳是指格林威治时间从 1970 年 1 月 1 日零点到此刻经历的秒数或毫秒数 。
本文插图
Date 的基本用法如下:
本文插图
Date 在使用时有几个缺点:
- 每次获取年份、月份都需要转换
- 只能获取当前时区的时间 , 无法设置时区
- 无法加减日期和时间
- 无法计算某个月的第几个星期几
3.2. SimpleDateFormat 默认输出的时间字符串的格式通常不能满足我们的要求 , 所以我们需要用 SimpleDateFormat 来格式化输出 , 它使用一些预定义的字符串表示格式化 , 较常用的字符串有:
- y:年
- M:月
- d:日
- H:小时
- m:分钟
- s:秒
- S:毫秒
- a:上午 / 下午
- E:星期
- z:时区
本文插图
SimpleDateFormat 的使用:
本文插图
这里的时区信息输出为 CST , 表示 China Standard Time , 也就是中国标准时间 。
SimpleDateFormat 会根据预定义字符的长度打印不同长度的信息 。 以 M 为例:
- M:输出 2
- MM:输出 02
- MMM:输出 2月
- MMMM:输出 二月
我们来发挥一下极客精神 , 探索一下预定义字符串过长 Java 会怎么处理:
本文插图
本例中 , 每个预定义字符的长度都为 10 , 可以看到 , 系统对年、日、时、分、秒、毫秒的处理是用前置 0 补足位数 , 对月份、上午 / 下午、星期、时区的处理是输出全中文 。
SimpleDateFormat 可以设置时区 , 我们可以用 SimpleDateFormat 把 Date 获取的时间转换为其他时区显示出来:
本文插图
3.3. Calendar 旧 API 中 , 为了加减日期和时间 , Java 提供了 Calendar 类 。
推荐阅读
- 人民网@【战“疫”说理】疫情防控中如何有效实现经济复苏?
- 太平洋电脑网:不止于高功率+金牌,爱国者ES650还能保5年,爱了爱了
- [笔记本电脑]乙辰科技正式发布首款WiFi6新品:北斗II号分布式无线路由器
- 2020@2020 iPhone SE终于来了?A13处理器+三种配色
- 高通865处理器PK麒麟990处理器 集成5G才是王道
- 找果网■就是牛!10.2英寸IPAD在第四季度撑起全球平板电脑市场
- 『车家号』高低功率如何选?后期改装就能“低变高”了吗?,同一款发动机
- #浦江头条#“大龄书僮”们还好吗?,网课一月间孩子手机平板电脑敞开用
- 手机、眼镜如何消毒?清洁要从细节做起
- 『音频』iOS如何导入百度云的音频(易剪和易剪多轨版)
