欢迎访问宙启技术站
智能推送

Java中使用时间和日期函数的方法?

发布时间:2023-06-11 11:31:59

1. Date类和SimpleDateFormat类

Java中,使用Date类表示日期时间,SimpleDateFormat类则可以将Date类型的日期时间格式化成字符串。 Date类提供了多个构造函数和方法,其中一个较为常用的方法是getTime(),可以返回自1970年1月1日00:00:00以来经过的毫秒数。SimpleDateFormat类可以利用format()方法,将Date类型的日期时间格式化成指定的字符串格式。

使用示例:

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str = sdf.format(date);
System.out.println(str);

输出结果:

2022年06月30日 12:28:20

2. Calendar类和GregorianCalendar类

Calendar类是一个抽象类,不能直接实例化,只能通过getInstance()方法获取一个实例。Calendar类的实现类有很多,其中一个是GregorianCalendar类。Calendar类提供了一些方便获取日期时间相关值的常量,比如YEAR、MONTH、DAY_OF_MONTH等等。Calendar类的add()方法可以将指定的时间域增加或减少一个指定的时间量,例如:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);

以上代码会将日期时间的月加上1个月。

3. LocalDate、LocalTime和LocalDateTime类

Java 8中引入的新日期时间类库,包括LocalDate、LocalTime和LocalDateTime类。这些类都是不可变的,表示与本地日期时间相关的值。LocalDate类表示本地日期,LocalTime类表示本地时间,LocalDateTime类表示本地日期时间。

使用示例:

LocalDateTime dateTime = LocalDateTime.now();
System.out.println(dateTime);

输出结果:

2022-06-30T12:39:32.571055

4. Duration和Period类

Duration和Period类都是处理时间的类。Duration类表示两个时刻之间的时间差,单位是秒和纳秒。Period类表示两个日期之间的时间差,单位是年、月和日。

使用示例:

LocalDateTime start = LocalDateTime.of(2022, 6, 30, 12, 0, 0);
LocalDateTime end = LocalDateTime.now();
Duration d = Duration.between(start, end);
System.out.println(d.toMinutes());

输出结果:

42

5. Instant类

Instant类用于表示时间戳,可以精确到纳秒。可以通过Instant.now()获取当前时间戳,也可以通过ofEpochSecond()和ofEpochMilli()方法来根据给定的秒数或毫秒数创建Instant对象。

使用示例:

Instant instant = Instant.now();
System.out.println(instant);

输出结果:

2022-06-30T05:48:35.002554Z

6. ZoneId、ZoneOffset和ZonedDateTime类

ZoneId、ZoneOffset和ZonedDateTime类可以用于处理时区相关信息。ZoneId类表示时区,例如ZoneId.of("Asia/Shanghai")表示上海时区。ZoneOffset类表示时区偏移量,例如ZoneOffset.of("+08:00")表示东八区偏移量。ZonedDateTime类表示带有时区信息的日期时间。

使用示例:

ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));
System.out.println(dateTime);

输出结果:

2022-06-30T13:30:25.130299+08:00[Asia/Shanghai]

7. Duration、Period和ChronoUnit类

Duration、Period和ChronoUnit类都可以用于处理时间跨度。Duration类表示时间间隔,Period类表示日期间隔,ChronoUnit类可以表示不同的时间单位,例如天、小时、分钟等。

使用示例:

LocalDate start = LocalDate.of(2022, 6, 30);
LocalDate end = LocalDate.now();
Period p = Period.between(start, end);
System.out.println(p.getDays());

输出结果:

0

总结:

Java中提供了多种处理时间和日期的类和方法,可以根据具体需求选择合适的类和方法。Date类、Calendar类和SimpleDateFormat类是较为传统的处理时间和日期的类,LocalDateTime类、Instant类等是较为新颖的日期时间类库。同时,Java中提供了处理时间和日期跨度的类和方法,功能较为强大,例如Period和Duration类。