Java 8 日期和时间 - 如何获取当前时间和时间戳?

2022-12-01 08:05:30

在过去,我们使用DateCalendarAPI 来表示和操作日期。

  • java.util.Date– 日期和时间,使用默认时区打印。
  • java.util.Calendar- 日期和时间,更多操作日期的方法。
  • java.text.SimpleDateFormat– 格式化(日期 -> 字符串),解析(字符串 -> 日期)日期和日历。

Java 8 在包中创建了一系列新的日期和时间 APIjava.time

  • java.time.LocalDate– 没有时间的日期,没有时区。
  • java.time.LocalTime– 没有日期的时间,没有时区。
  • java.time.LocalDateTime– 日期和时间,没有时区。
  • java.time.ZonedDateTime– 日期和时间,带时区。
  • java.time.DateTimeFormatter– java.time 的格式化(日期 -> 字符串),解析(字符串 -> 日期)。
  • java.time.Instant– 机器的日期和时间,自 Unix 纪元时间以来经过的秒数(UTC 时间 1970 年 1 月 1 日午夜)

1. 获取当前时间

1. java.time.LocalDate

对于java.time.LocalDate, 用于LocalDate.now()获取没有时区的当前日期,并使用DateTimeFormatter.进行格式化。

publicclassLocalDateExample{publicstaticvoidmain(String[] args){DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("uuuu/MM/dd");LocalDate localDate=LocalDate.now();String format= dateTimeFormatter.format(localDate);// 2022/06/02System.out.println(format);}}

2. java.time.LocalTime

对于java.time.LocalTime, 用于LocalDate.now()获取没有时区的当前时间,并使用DateTimeFormatter进行格式化。

publicclassLocalTimeExample{publicstaticvoidmain(String[] args){DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("HH:mm:ss");LocalTime localTime=LocalTime.now();// 13:04:02System.out.println(dateTimeFormatter.format(localTime));}}

3. java.time.LocalDateTime

对于java.time.LocalDateTime, 用于LocalDateTime.now()获取没有时区的当前日期时间,并使用DateTimeFormatter格式化。

publicclassLocalDateTimeExample{publicstaticvoidmain(String[] args){DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");LocalDateTime now=LocalDateTime.now();// 2022/06/03 13:04:48System.out.println(dateTimeFormatter.format(now));}}

4. java.time.ZonedDateTime

对于java.time.ZonedDateTime, 用于ZonedDateTime.now()获取系统默认时区或指定时区的当前日期时间。

publicclassZonedDateTimeExample{publicstaticvoidmain(String[] args){DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");// Get default time zoneSystem.out.println(ZoneOffset.systemDefault());// Asia/SingaporeSystem.out.println(OffsetDateTime.now().getOffset());// +08:00// get current date time, with +08:00ZonedDateTime now=ZonedDateTime.now();System.out.println(dateTimeFormatter.format(now));// 2022/06/03 13:17:30}}

5. java.time.Instant

对于java.time.Instant, 用于Instant.now()获取自Unix 纪元时间(UTC 时间 1970 年 1 月 1 日午夜)以来经过的秒数,然后转换为其他java.time.*日期时间类。

publicclassInstantExample{publicstaticvoidmain(String[] args){DateTimeFormatter dtfDateTime=DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");// seconds passed since the Unix epoch time (midnight of January 1, 1970 UTC)Instant now=Instant.now();// convert Instant to LocalDateTimeLocalDateTime localDateTime=LocalDateTime.ofInstant(now,ZoneId.systemDefault());System.out.println(dtfDateTime.format(localDateTime));// 2022/06/03 13:23:24}}

6. java.util.Date(旧版)

对于java.util.Date,使用new Date()new Date(System.currentTimeMillis()获取当前日期时间,并使用SimpleDateFormat进行格式化。

publicclassDateExample{publicstaticvoidmain(String[] args){SimpleDateFormat simpleDateFormat=newSimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date date=newDate();System.out.println(simpleDateFormat.format(date));// 2022/06/03 13:11:02Date date1=newDate(System.currentTimeMillis());System.out.println(simpleDateFormat.format(date1));// 2022/06/03 13:11:02}}

7. java.util.Calendar(旧版)

对于java.util.Calendar,用于Calendar.getInstance()获取当前日期时间,并使用SimpleDateFormat进行格式化。

publicclassCalendarExample{publicstaticvoidmain(String[] args){DateFormat dateFormat=newSimpleDateFormat("yyyy/MM/dd HH:mm:ss");Calendar calendar=Calendar.getInstance();System.out.println(calendar);System.out.println(dateFormat.format(calendar.getTime()));// 2022/06/03 13:14:09}}

2. 获取当前时间戳

1. java时间戳示例(旧版)

publicclassTimeStampExample{privatestaticfinalSimpleDateFormat sdf1=newSimpleDateFormat("yyyy.MM.dd.HH.mm.ss");privatestaticfinalSimpleDateFormat sdf2=newSimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");privatestaticfinalSimpleDateFormat sdf3=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");publicstaticvoidmain(String[] args){// method 1Timestamp timestamp=newTimestamp(System.currentTimeMillis());System.out.println(timestamp);// 2022-06-03 13:32:03.217System.out.println(timestamp.getTime());// 1654234323217// method 2 - via DateDate date=newDate();Timestamp timestamp1=newTimestamp(date.getTime());System.out.println(timestamp1.getTime());// 1654234323217System.out.println(sdf1.format(timestamp));// 2022.06.03.13.32.03System.out.println(sdf2.format(timestamp));// 2022-06-03T13:32:03.217+08:00System.out.println(sdf3.format(timestamp));// 2022-06-03 13:32:03}}

2. 将 Instant 转换为时间戳

publicclassInstantExample{publicstaticvoidmain(String[] args){Timestamp timestamp=newTimestamp(System.currentTimeMillis());System.out.println(timestamp);// 2022-06-03 13:35:36.842System.out.println(timestamp.getTime());// 1654234536842// Convert Timestamp to InstantInstant instant= timestamp.toInstant();System.out.println(instant);// 2022-06-03T05:35:36.842ZSystem.out.println(instant.toEpochMilli());// 1654234536842// Convert Instant to TimestampTimestamp tsFromInstant=Timestamp.from(instant);System.out.println(tsFromInstant.getTime());// 1654234536842}}
  • 作者:啦啦不要熬夜啊
  • 原文链接:https://hengheng.blog.csdn.net/article/details/125112127
    更新时间:2022-12-01 08:05:30