嗨客网搜索
Java开发环境搭建
Java方法
Java日期操作

Java日期操作类教程

在生产开发过程中,会用到和时间相关的信息,所以 Java 语言系统就提供了时间操作的相关的类。

JavaDate类

说明

Date 类是定义时间对象的一个类,它是一个较为简单的操作类。

案例

package com.haicoder.net.date; import java.util.Date; public class DateTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); Date date = new Date(); System.out.println(date); } }

02 date.png

从运行结果可以看到 ,我们得到了系统的当前时间,但是这个时间格式的可读性并不是很好。这个格式也不能精确到毫秒。

Java Calendar类

说明

Calendar 类可以将时间精确到毫秒。Calendar 是一个抽象类,如果想要使用这个类里面的方法,那么只能够创建该抽象类子类对象。

Calendar 提供了一些全局的常量,分别表示时间的一些变量值。

常量 类型 描述
public final static int YEAR = 1; int 取得年
public final static int MONTH = 2; int 取得月
public final static int DAY_OF_MONTH = 5; int 取得日
public final static int HOUR_OF_DAY = 11; int 取得小时,24小时制
public final static int MINUTE = 12; int 取得分
public final static int SECOND = 13; int 取得秒
public final static int MILLISECOND = 14; int 取得毫秒

Calendar 提供了一些方法

方法 描述
public static Calendar ge tInstance() 根据默认的失去实例化对象
public boolean after(Object when) 判断一个日期是否在指定日期之后
public boolean before(Object when) 判断一个日期是否在指定日期之前
pubic int get(int field) 返回给定日历字段的值

案例

package com.haicoder.net.date; import java.util.Calendar; import java.util.GregorianCalendar; public class DateTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); Calendar calendar = new GregorianCalendar(); System.out.println("年:" + calendar.get(Calendar.YEAR)); System.out.println("月:" + (calendar.get(Calendar.MONTH) + 1)); System.out.println("日:" + calendar.get(Calendar.DAY_OF_MONTH)); System.out.println("时:" + calendar.get(Calendar.HOUR_OF_DAY)); System.out.println("分:" + calendar.get(Calendar.MINUTE)); System.out.println("秒:" + calendar.get(Calendar.SECOND)); System.out.println("毫秒:" + calendar.get(Calendar.MILLISECOND)); } }

运行结果如下:

03 calendar.png

我们定义了子类的 GregorianCalendar 对象,然后获取了当前系统的年月日时分秒相关的信息。

Java LocalDate类

说明

LocalDate 类是一个不可变化的类,它的默认格式是(yyyy-MM-dd)的日期。LocalDate 提供了一些常用的方法

方法名称 描述
public static LocalDate now() 获取当前时间
public static LocalDate of(int year, int month, int dayOfMonth) 根据传递的年月日创建一个时间
public LocalDate plus(long amountToAdd, TemporalUnit unit) 添加指定的格式的时间
public LocalDate plusYears(long yearsToAdd) 当前时间添加指定的年
public LocalDate plusMonths(long monthsToAdd) 当前时间添加指定的月份
public LocalDate plusWeeks(long weeksToAdd) 添加指定的周
public LocalDate plusDays(long daysToAdd) 添加指定的天

案例

package com.haicoder.net.clas; import java.time.LocalDate; public class LocalDateTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); LocalDate localDate = LocalDate.now(); LocalDate localDateOf = LocalDate.of(2020, 5, 29); System.out.println("LocalDate.of : " + localDateOf); LocalDate localDatePlusYear = localDate.plusYears(1); LocalDate localDatePlusMonth = localDate.plusMonths(2); LocalDate localDatePlusWeek = localDate.plusWeeks(2); LocalDate localDatePlusDays = localDate.plusDays(3); System.out.println("LocalDate.now() : " + localDate); System.out.println("localDatePlusYear :" + localDatePlusYear); System.out.println("localDatePlusMonth :" + localDatePlusMonth); System.out.println("localDatePlusWeek :" + localDatePlusWeek); System.out.println("localDatePlusDays :" + localDatePlusDays); System.out.println("结束"); } }

运行结果如下

04 localdate.png

这个类是精确到天维度的,我们平时对时间进行加减操作的时候,可以使用 LocalDate 来操作。LocalDate 类是线程安全的。

Java LocalTime类

说明

与 LocalDate 不同的是,LocalDate 打印出的是精确到天的时间,而 LocalTime 可以获得到当前的小时和分钟。LocalTime 提供了一些常用的方法

方法名 描述
public static LocalTime now() 获取当前时间
public static LocalTime of(int hour, int minute) 传入一个小时和分钟,返回一个LocalTime对象
public int getHour() 获取当前时间的小时
public int getMinute() 获取当前时间的分钟
public int getSecond() 获取当前时间的秒
public LocalTime plus(long amountToAdd, TemporalUnit unit) 时间加上 amountToAdd 这么长时间的 unit 时间单位信息,unit 有 时/分/秒/毫秒等和时间相关的单位
public LocalTime plusHours(long hoursToAdd) LocalTime 对象的时间上面增加小时
public LocalTime plusMinutes(long minutesToAdd) LocalTime 对象的时间上面增加分钟
public LocalTime plusSeconds(long secondstoAdd) LocalTime 对象的时间上面增加秒
public LocalTime plusNanos(long nanosToAdd) LocalTime 对象的时间上面增加豪秒

案例

package com.haicoder.net.date; import java.time.LocalTime; import java.time.temporal.ChronoUnit; public class LocalTimeTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); LocalTime localTime = LocalTime.now(); System.out.println("LocalTime now :" + localTime); System.out.println("LocalTime of(int hour, int minute):" + LocalTime.of(23, 59)); System.out.println("getHour():" + localTime.getHour()); System.out.println("getMinute():" + localTime.getMinute()); System.out.println("getSecond():" + localTime.getSecond()); System.out.println("LocalTime plus(long amountToAdd, TemporalUnit unit),添加 100 秒:" + localTime.plus(1000, ChronoUnit.SECONDS)); System.out.println("LocalTime plusHours(long hoursToAdd),添加两个小时:" + localTime.plusHours(2)); System.out.println("LocalTime plusMinutes(long minutesToAdd),添加15 分钟:" + localTime.plusMinutes(15)); System.out.println("LocalTime plusSeconds(long secondstoAdd) 添加 120 秒:" + localTime.plusSeconds(120)); System.out.println("LocalTime plusNanos(long nanosToAdd) 添加 1000 毫秒:" + localTime.plusNanos(1000)); System.out.println("结束"); } }

运行结果如下:

05 localdatetime.png

这个类是对当前的小时分钟等进行有效操作,不会对天进行操作,所以我们在使用的时候,如果想要只对小时和分钟操作的话,可以使用 LocalTime 这个类。

Java日期操作总结

从本文中,我们知道定义一个时间对象可以用 Date 也可以用 Calendar 。Date 的阅读性比较差,不符合我们中国人的阅读方式。Calendar 可以更加方便的让我们获取到当前时间到指定数据。比如时分秒等等。

嗨客网顶部