Java 日期(Date)是在JDK 1.0中引入的,它是用于处理日期和时间的类。 Date类的一些缺点在Java 8中得到了解决。 在本文中,我们将探讨Java Date类及其方法提供的功能和用法,以及Java 8中的日期API。(以下以Java 8为基础进行阐述)
一、Date类的基本用法
在Java中,日期类主要有两个:java.util.Date和java.sql.Date。java.util.Date可以保存精确到毫秒的时间信息,而java.sql.Date只能精确到日期,而且只能够保存SQL DATE格式的时间信息。 在新版本JDK中提供了新的日期时间API类,因此java.util.Date已经逐渐被废弃。但是在实际开发中,仍然可以使用Java 8之前的Java.util.Date类。
以下代码演示了如何通过Date类获取当前日期和时间:
import java.util.Date; public class DateExample { public static void main(String[] args) { //获取当前日期和时间 Date currentDate = new Date(); System.out.println("当前日期和时间为: " + currentDate); } }
运行结果为:
当前日期和时间为: Tue Aug 24 13:03:23 CST 2021
可以看到,Java Date类的toString()方法返回包含当前日期和时间的字符串。
除了获取当前日期和时间外,我们还可以使用Date类的其他方法获取特定时间的日期和时间,例如:
import java.util.Date; public class DateExample { public static void main(String[] args) { Date currentDate = new Date(); //获取1970年1月1日00:00:00 GMT 以来的毫秒数 long timeStamp = currentDate.getTime(); System.out.println("Timestamp(1970年1月1日00:00:00 GMT以来的毫秒数):" + timeStamp); //使用时间戳创建一个Date对象 Date newDate = new Date(timeStamp); System.out.println("创建的新日期和时间为:" + newDate); } }
运行结果为:
Timestamp(1970年1月1日00:00:00 GMT以来的毫秒数):1629793666503 创建的新日期和时间为:Tue Aug 24 13:47:46 CST 2021
上述代码中,我们使用Date类的getTime()方法获取从1970年1月1日00:00:00 GMT以来的毫秒数。 然后,我们可以使用时间戳创建一个Date对象,这可以通过构造函数实现。
二、使用SimpleDateFormat日期格式化
SimpleDateFormat是Java日期格式化的一个实用类。 它可以将Java中的Date对象转换为字符串,反之亦然。使用SimpleDateFormat的一个常见用途就是将日期格式化为特定的字符串。
以下代码演示了如何使用SimpleDateFormat格式化日期:
import java.text.SimpleDateFormat; import java.util.Date; public class DateFormatExample { public static void main(String[] args) { //日期格式化对象 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date currentDate = new Date(); //将日期格式化为字符串 String formattedDate = sdf.format(currentDate); System.out.println(formattedDate); } }
运行结果为:
2021-08-24 14:11:21
上述代码中,我们创建了一个SimpleDateFormat对象,它定义了如何格式化日期。然后,我们使用它将Date对象转换为格式化的字符串。
三、使用LocalDateTime和DateTimeFormatter
Java 8引入了新的日期API。 这个API主要由以下几个类和接口组成:LocalDate,LocalTime,LocalDateTime,Instant,Duration,Period和DateTimeFormatter。
在JavaScript中,可以使用Moment.js库来处理日期。 在Java 8中的新日期API提供了与Moment.js类似的功能,让我们更容易地处理日期。
以下代码演示了如何使用LocalDateTime和DateTimeFormatter格式化日期:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class LocalDateTimeExample { public static void main(String[] args) { //日期时间格式化对象 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime currentDateTime = LocalDateTime.now(); //将日期时间格式化为字符串 String formattedDateTime = currentDateTime.format(formatter); System.out.println(formattedDateTime); } }
运行结果为:
2021-08-24 14:32:34
可以看到,我们使用DateTimeFormatter.ofPattern()方法创建了一个DateTimeFormatter对象,并定义了格式化模板。 然后,我们使用它将LocalDateTime对象转换为格式化的字符串。
四、处理日期和时间差异
Java日期API也提供了一些方法来处理日期之间的差异。 下面是使用Java日期API计算两个日期之间差异的示例:
import java.time.LocalDate; import java.time.Month; import java.time.Period; public class DateDifferencesExample { public static void main(String[] args) { //创建两个LocalDate对象 LocalDate date1 = LocalDate.of(2021, Month.JULY, 9); LocalDate date2 = LocalDate.of(2021, Month.AUGUST, 24); //计算日期差异 Period period = Period.between(date1, date2); //输出结果 System.out.printf("日期差异: %d years, %d months, and %d days old", period.getYears(), period.getMonths(), period.getDays()); } }
运行结果为:
日期差异: 0 years, 1 months, and 15 days old
上述代码中,我们使用Period.between()方法计算两个LocalDate对象之间的差异。 然后,我们输出结果,显示日期之间的差异。
五、参考资料
1. Oracle官方文档:https://docs.oracle.com/javase/8/docs/api/index.html
2. Java Tutorials:https://docs.oracle.com/javase/tutorial/datetime/index.html
3. SimpleDateFormat文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html
4. DateTimeFormatter文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html
以上就是关于Java日期(Date)的详细解析和用法。 在实际开发中,要特别注意Java.util.Date和Java 8新日期API之间的区别和使用方法。