Calendar、Date、LocalDate/LocalTime

  Java.util.Date是一个“万能接口”,它包含日期、时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪些部分的数据是有用的,哪些部分的数据是不能用的。

  1.1 Date的构造方法

  Date 是我们使用的最多的一个日期类,Date提供的构造方法在官方API中有一下几种:

Calendar、Date、LocalDate/LocalTime

  Date 类提供了多种构造方法,但是目前有很多方法都已经不建议使用

public Date() { this(System.currentTimeMillis()); } public Date(long date) { fastTime = date; } @Deprecated public Date(int year, int month, int date) { this(year, month, date, 0, 0, 0); } @Deprecated public Date(int year, int month, int date, int hrs, int min) { this(year, month, date, hrs, min, 0); } @Deprecated public Date(int year, int month, int date, int hrs, int min, int sec) @Deprecated public Date(String s) { this(parse(s)); }

  目前我们可以通过使用:

Date date0 = new Date(); Date date1 = new Date(time);

  这两种方法创建对象的不同主要是通过指定的时间戳不同,通过设置Date 中的  fastTime 进行设置Date 对象的时间。

  除了使用构造方法获取实例,Date 还可以通过 Instant 来创建一个Date 实例:

Instant instant = Instant.now(); Date date = Date.from(instant);

   Instant 是Java 8 提供的新特性:

Calendar、Date、LocalDate/LocalTime

  1.2 Date的常用方法

    Date 类中,提供了常用的获取:年,月,日,时,分,秒等方法:

Date date = new Date(); int dates = date.getDate(); int year = date.getYear(); int month = date.getMonth(); int day = date.getDay(); int hours = date.getHours(); int min = date.getMinutes(); int second = date.getSeconds(); long time = date.getTime(); int times = date.getTimezoneOffset();

    输出结果:

dates: 14 year: 116 month: 11 day: 3 hours: 15 min: 8 second: 29 time: 1481699309422 times: -480  

     读者可能会发现,这里的年份并不是我们想要的,这里主要是因为代码方法实现:

Calendar、Date、LocalDate/LocalTime

我们可以看到,这里的getYear 并不是获取当前年份,而是获取到和1900年的差值,这里主要是因为JDK老版本遗留下来的问题,对于Date 中获取年月日的方法,现在已经不建议使用了。

    Date类中也提供了一些设置日期的方法:

Calendar、Date、LocalDate/LocalTime

      与上面的get方法是一一对应的,但是现在也同样不建议使用了。

  1.3 Date的总结

    经过我们上述的分析,我们发现,Date 类如今很多方法已经没有什么用处了,确实,如今时间的处理并不直接在Date 类中进行,而是通过Calendar,或者LocalDate 来进行,我们再日常使用中,更多的是要来做一个记录日期的实例。

2、Calendar 类

  介绍一下Date 与 Calendar 的区别

  Date用于记录某一个含日期的、精确到毫秒的时间。重点在代表一刹那的时间本身。
  Calendar用于将某一日期放到历法中的互动——时间和年、月、日、星期、上午、下午、夏令时等这些历法规定互相作用关系和互动。Calendar本身代表公历的一个简化缩水版,姑且叫“计算机历”。

  完整的公历是格里高利历,Java SE中以GregorianCalendar类来提供相关的历法功能。

  2.1 Calendar 的构造方法

Calendar、Date、LocalDate/LocalTime

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0bae27e1d19e44918b5b9b6a5fa062e.html