在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作。
在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java 中的日期操作。
从上图可以看出 Java 为我们提供了三个标准类库来工我们使用,三个类库之间在使用过程中又需要相互协作,接下来我们就一一看一下。
Java中的时间
1、Java 中的时间使用标准类库的 Date 类表示,是用距离一个固定时间点的毫秒数(可正可负,long 类型)表示一个特定的时间点;
2、固定的时间点叫纪元(epoch),是 UTC 时间 1970年1月1日 00:00:00;
3、UTC(Universal Time Coordinated 世界调整时间)与GMT(Greenwich Mean Time 格林威治时间)一样,是一种具有实际目的的科学标准时间。
1 import java.util.Date; 2 3 /** 4 * java.util.Date 包 5 * Date 的每一个实例用于表示一个确切的时间点。 6 * 内部维护了一个 long 值,该值记录的是从: 7 * 1970年1月1日 00:00:00 到表示的时间点之间所经历的毫秒值。 8 * 正数是 70 年以后的日期,负数是 70 年以前的日期 9 * 由于 Date 设计上存在缺陷(时区,千年虫),所以它的大部分方法被设置为"过时的", 10 * 不再建议使用 11 */ 12 public class Main { 13 public static void main(String[] args) { 14 // 当前系统时间 15 Date now = new Date(); 16 System.out.println(now); // Wed Dec 11 15:57:21 CST 2019 --对非英语地区很不友好 17 18 /** 19 * Date 的大部分方法不建议使用了 20 * */ 21 now.getYear(); // getYear 上面油条横线,表示方法已不再建议使用 22 /** 23 * 获取 Date 内部维护的 long 还可以使用 24 * */ 25 long time = now.getTime(); 26 System.out.println(time); // 1576053403721 27 /** 28 * void setTime(long) 29 * 设置一个 long 值,使 Date 表示该 long 值所表示的时间 30 * */ 31 time += 24 * 60 * 60 * 1000; // 将 time 加 1 天的毫秒,即明天 32 now.setTime(time); // setTime() 可以将时间设置为我们规定的时间 33 System.out.println(now); // Thu Dec 12 16:39:54 CST 2019 34 35 } 36 }
在上面的代码中,我们讲解了一些关于 Date 的一些内容,可以看出 Date 已经不是很实用现在的编程,我们充其量也只是用一下 getTime 这个方法。下面我们来看一下 SimpleDateFormat
SimpleDateFormat 可以根据一个给定的日期格式将 String 和 Date 想换转换,格式如下:
现在我们就根据上面的转换格式输出一下当前时间,代码如下:
1 import java.text.ParseException; 2 impo