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

Java中常见的日期处理函数介绍

发布时间:2023-05-23 18:27:52

Java中常见的日期处理函数有很多,本文就常见的日期处理函数进行介绍和示例,方便大家参考。

1. SimpleDateFormat

SimpleDateFormat是常用的日期格式化类。常用的格式化方法是format()方法,它的参数为Date类型的日期对象,返回String类型的格式化日期字符串。

示例:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = sdf.format(new Date());
System.out.println(dateString);

输出:

2022-04-01 09:18:26

2. Calendar

Calendar类是一个抽象类,用于封装了关于日历系统的信息,提供了一些操作日历字段和格式化输出的方法。

示例:

Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.printf("Today is %04d-%02d-%02d
", year, month, day);

输出:

Today is 2022-04-01

3. LocalDate、LocalTime、LocalDateTime

这是Java 8引入的新的日期时间API,这些类都是线程安全的。LocalDate、LocalTime、LocalDateTime都提供了丰富的日期和时间操作方法。

示例:

LocalDateTime now = LocalDateTime.now();
System.out.printf("now: %s, year: %d, month: %s, day: %d, hour: %d, minute: %d, second: %d
",
        now,
        now.getYear(),
        now.getMonth(),
        now.getDayOfMonth(),
        now.getHour(),
        now.getMinute(),
        now.getSecond());

输出:

now: 2022-04-01T09:28:06.201, year: 2022, month: APRIL, day: 1, hour: 9, minute: 28, second: 6

4. ZoneId、ZoneOffset

这也是Java 8引入的新的日期时间API,它们提供了时区和偏移量的处理方法。ZoneId可以用来表示时区,ZoneOffset可以用来表示时区偏移量。

示例:

ZoneId shanghaiZone = ZoneId.of("Asia/Shanghai");
ZoneOffset offset = ZoneOffset.of("+08:00");
Instant instant = Instant.now();
ZonedDateTime zdt1 = instant.atZone(shanghaiZone);
ZonedDateTime zdt2 = instant.atOffset(offset).atZoneSameInstant(shanghaiZone);
System.out.println(zdt1);
System.out.println(zdt2);

输出:

2022-04-01T09:36:38.178+08:00[Asia/Shanghai]
2022-04-01T09:36:38.178+08:00[Asia/Shanghai]

5. Duration、Period

这也是Java 8引入的新的日期时间API,它们用于计算时间间隔和日期差值。Duration主要用于计算时间间隔,Period主要用于计算日期差值。

示例:

LocalDateTime before = LocalDateTime.of(2022, Month.APRIL, 1, 0, 0, 0);
LocalDateTime after = LocalDateTime.of(2022, Month.APRIL, 1, 9, 39, 30);
Duration duration = Duration.between(before, after);
System.out.printf("Duration: %d seconds, %d nanoseconds
",
        duration.getSeconds(),
        duration.getNano());

LocalDate start = LocalDate.of(2022, 1, 1);
LocalDate end = LocalDate.of(2022, 4, 1);
Period period = Period.between(start, end);
System.out.printf("Period: %d years, %d months, %d days
",
        period.getYears(),
        period.getMonths(),
        period.getDays());

输出:

Duration: 35370 seconds, 0 nanoseconds
Period: 0 years, 3 months, 0 days

总结

Java中的日期处理类很多,但是比较常用的就是 SimpleDateFormat、Calendar、LocalDate、LocalTime、LocalDateTime、ZoneId、ZoneOffset、Duration、Period等。我们可以根据自己的需求选择合适的日期处理类和方法。