美文网首页
Java 面试系列:玩转时间操作 + 面试题

Java 面试系列:玩转时间操作 + 面试题

作者: you的日常 | 来源:发表于2021-02-11 19:05 被阅读0次

在 JDK 8 之前,Java 语言为我们提供了两个类用于操作时间,它们分别是:java.util.Date 和 java.util.Calendar,但在 JDK 8 的时候为了解决旧时间操作类的一些缺陷,提供了几个新的类,用于操作时间和日期,它们分别是:LocalTime、LocalDateTime、Instant,都位于 java.time 包下。

时间的操作在我们日常的开发中经常见到,比如,业务数据都要记录创建时间和修改时间,并要把这些时间格式化之后显示到前端页面,再比如我们需要计算业务数据的时间间隔等,都离不开对时间的操作,那如何正确而优雅地使用时间?这就是我们接下来要讨论的话题。

时间基础知识科普

格林威治时间

格林威治(又译格林尼治)是英国伦敦南郊原格林威治天文台的所在地,它是世界计算时间和地球经度的起点,国际经度会议 1884 年在美国华盛顿召开,会上通过协议,以经过格林威治天文台的经线为零度经线(即本初子午线),作为地球经度的起点,并以格林威治为“世界时区”的起点。

格林威治时间和北京时间的关系

格林威治时间被定义为世界时间,就是 0 时区,北京是东八区。也就是说格林威治时间的 1 日 0 点,对应到北京的时间就是 1 日 8 点。

时间戳

时间戳是指格林威治时间 1970-01-01 00:00:00(北京时间 1970-01-01 08:00:00)起至现在的总秒数。

JDK 8 之前的时间操作

1 获取时间

Date date = new Date();
System.out.println(date);
Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
System.out.println(time);

2 获取时间戳

long ts = new Date().getTime();
System.out.println(ts);
long ts2 = System.currentTimeMillis();
System.out.println(ts2);
long ts3 = Calendar.getInstance().getTimeInMillis();
System.out.println(ts3);

3 格式化时间

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sf.format(new Date()));  // output:2019-08-16 21:46:22

SimpleDateFormat 构造参数的含义,请参考以下表格信息:

字符 含义 示例
y 年 yyyy 1996
M 月 MM 07
d 月中的天数 dd-02
D 年中的天数 121
E 星期几 星期四
H 小时数(0-23) HH-23
h 小时数(1-12) hh-11
m 分钟数 mm-02
s 秒数 ss-03
Z 时区 +0800

相关文章

网友评论

      本文标题:Java 面试系列:玩转时间操作 + 面试题

      本文链接:https://www.haomeiwen.com/subject/iymebktx.html