10个Java中常见的时间和日期函数
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);
