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

10个Java中常见的时间和日期函数

发布时间:2023-06-18 17:31:59

1. Date类

Date类是表示日期和时间的类。它提供了getTime()方法,返回从1970年1月1日00:00:00 GMT以来的毫秒数,也提供了setTime()方法,通过传入一个毫秒数来设置日期和时间。

示例:

Date date = new Date();
System.out.println(date);

long timestamp = date.getTime();
System.out.println(timestamp);

date.setTime(timestamp + 3600000);
System.out.println(date);

2. Calendar类

Calendar类是代表日历的抽象类,它可以用来操作日期、时间、时区等相关属性。它提供了getInstance()方法来获取当前时间的Calendar对象,也提供了set()和get()方法来设置和获取对应的属性。

示例:

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());

calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, 4);
calendar.set(Calendar.DATE, 12);
System.out.println(calendar.getTime());

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DATE);
System.out.printf("%04d-%02d-%02d
", year, month + 1, date);

3. SimpleDateFormat类

SimpleDateFormat类是用于格式化日期的类,可以将一个日期格式化成一个字符串,也可以将字符串解析成一个日期。它提供了多个格式化和解析的模式,如“yyyy/MM/dd HH:mm:ss”、“EEE, MMM d, ''yy”等。

示例:

SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat format2 = new SimpleDateFormat("EEE, MMM d, ''yy");

Date date = new Date();
System.out.println(format1.format(date));
System.out.println(format2.format(date));

String dateString = "2022-05-12 12:34:56";
Date date2 = format1.parse(dateString);
System.out.println(date2);

4. Instant类

Instant类是在Java 8中引入的类,用于表示时间戳(即从1970年1月1日00:00:00 GMT开始的秒数或纳秒数)。它可以通过now()方法获取当前时间的Instant对象,也可以通过ofEpochSecond()或ofEpochMilli()方法构建指定时间的Instant对象。

示例:

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

Instant instant2 = Instant.ofEpochSecond(1000000000);
System.out.println(instant2);

Instant instant3 = Instant.ofEpochMilli(System.currentTimeMillis());
System.out.println(instant3);

5. LocalDate类

LocalDate类是Java 8中引入的类,用于表示日期。它提供了now()、of()和parse()等方法,用于获取当前日期、构建指定日期、解析日期字符串等操作,并且可以通过plus()和minus()等方法进行日期的加减运算。

示例:

LocalDate date1 = LocalDate.now();
System.out.println(date1);

LocalDate date2 = LocalDate.of(2022, 5, 12);
System.out.println(date2);

LocalDate date3 = LocalDate.parse("2022-05-12");
System.out.println(date3);

LocalDate date4 = date2.plusDays(100);
System.out.println(date4);

6. LocalTime类

LocalTime类是Java 8中引入的类,用于表示时间。它提供了now()、of()和parse()等方法,用于获取当前时间、构建指定时间、解析时间字符串等操作,并且可以通过plus()和minus()等方法进行时间的加减运算。

示例:

LocalTime time1 = LocalTime.now();
System.out.println(time1);

LocalTime time2 = LocalTime.of(12, 34, 56);
System.out.println(time2);

LocalTime time3 = LocalTime.parse("12:34:56");
System.out.println(time3);

LocalTime time4 = time2.plusHours(1);
System.out.println(time4);

7. LocalDateTime类

LocalDateTime类是Java 8中引入的类,用于表示日期和时间。它可以通过now()、of()和parse()等方法获取当前日期和时间、构建指定日期和时间、解析日期时间字符串等操作,并且可以通过plus()和minus()等方法进行日期时间的加减运算。

示例:

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

LocalDateTime dateTime2 = LocalDateTime.of(2022, 5, 12, 12, 34, 56);
System.out.println(dateTime2);

LocalDateTime dateTime3 = LocalDateTime.parse("2022-05-12T12:34:56");
System.out.println(dateTime3);

LocalDateTime dateTime4 = dateTime2.plusDays(100).plusHours(1);
System.out.println(dateTime4);

8. ZonedDateTime类

ZonedDateTime类是Java 8中引入的类,用于表示带有时区偏移量的日期和时间。它可以通过now()、of()等方法获取当前日期和时间、构建指定日期和时间等操作,在进行加减运算时也会考虑到时区偏移量。

示例:

ZonedDateTime zonedDateTime1 = ZonedDateTime.now();
System.out.println(zonedDateTime1);

ZonedDateTime zonedDateTime2 = ZonedDateTime.of(2022, 5, 12, 12, 34, 56, 0, ZoneId.of("Asia/Shanghai"));
System.out.println(zonedDateTime2);

ZonedDateTime zonedDateTime3 = ZonedDateTime.parse("2022-05-12T12:34:56+08:00[Asia/Shanghai]");
System.out.println(zonedDateTime3);

ZonedDateTime zonedDateTime4 = zonedDateTime2.plusDays(100);
System.out.println(zonedDateTime4);

9. Duration类

Duration类是Java 8中引入的类,用于表示时间间隔。它可以通过between()方法计算两个日期时间之间的时间间隔,也可以通过plus()和minus()方法进行时间间隔的加减。

示例:

Instant instant1 = Instant.now();
Instant instant2 = Instant.now().plusSeconds(3600);
Duration duration1 = Duration.between(instant1, instant2);
System.out.println(duration1);

LocalDateTime dateTime1 = LocalDateTime.of(2022, 5, 12, 12, 34, 56);
LocalDateTime dateTime2 = dateTime1.plusDays(100);
Duration duration2 = Duration.between(dateTime1, dateTime2);
System.out.println(duration2);

Duration duration3 = Duration.ofHours(1);
System.out.println(duration3);

Duration duration4 = duration3.plusMinutes(30);
System.out.println(duration4);

10. Period类

Period类是Java 8中引入的类,用于表示日期间隔。它可以通过between()方法计算两个日期之间的日期间隔,也可以通过plus()和minus()方法进行日期间隔的加减。

示例:

LocalDate date1 = LocalDate.of(2022, 5, 12);
LocalDate date2 = LocalDate.of(2022, 8, 20);
Period period1 = Period.between(date1, date2);
System.out.println(period1);

Period period2 = Period.ofMonths(1);
System.out.println(period2);

Period period3 = period2.plusDays(15);
System.out.println(period3);