本文共 3606 字,大约阅读时间需要 12 分钟。
在 Java 开发中,日期时间处理是非常常见的操作。了解相关的 API 和类如何高效地处理日期时间是每个开发者的必备技能。本文将从基础的时间戳到复杂的日期时间处理进行详细讲解。
时间戳是衡量时间的重要单位。System.currentTimeMillis() 是 Java 提供的一个获取当前时间的方法。它返回当前时间与 1970 年 1 月 1 日 00:00:00 的时间差,以毫秒为单位。
public static void main(String[] args) { long currentTimeMillis = System.currentTimeMillis(); System.out.println(currentTimeMillis);} 时间戳广泛应用于分布式系统、数据库存储以及网络协议中。因为它可以精确到毫秒,适用于需要高精度时间记录的场景。
java.util.Date 是 Java 中最常用的日期时间类。它能够精确到毫秒,支持时间戳操作。
Date 类有两个关键的构造器:
Date():创建一个当前时间对应的 Date 对象。Date(long millis):创建一个指定时间戳的 Date 对象。Date 类提供了两个重要的方法:
getTime():获取当前 Date 对象的时间戳。toString():返回当前 Date 对象的字符串表示,格式为 "MM/dd/yyyy HH:mm:ss zzz"。@Testpublic void test2() { // 构造器一:创建当前时间的 Date 对象 Date date1 = new Date(); System.out.println(date1.toString()); // Sat Feb 16 16:35:31 GMT+08:00 2019 System.out.println(date1.getTime()); // 1550306204104 // 构造器二:创建指定毫秒数的 Date 对象 Date date2 = new Date(155030620410L); System.out.println(date2.toString());} Date.toString() 方法返回的字符串格式为:"MM/dd/yyyy HH:mm:ss zzz"。例如,日期 2019-02-16 16:35:31 GMT+08:00 的字符串表示为 "Sat Feb 16 16:35:31 GMT+08:00 2019"。
java.sql.Date 是 java.util.Date 的一个子类,专门用于处理与数据库相关的日期时间问题。它的主要用途是存储和传输数据库中的日期值。
java.util.Date 一样,java.sql.Date 也可以精确到毫秒。java.sql.Date 的 toString() 方法返回的字符串格式为 "yyyy-MM-dd"。java.sql.Date 对应的时间戳总是截断到 00:00:00,即数据库中的日期类型。在 JDBC 中,java.sql.Date 是用来处理 SQL 语句中的日期类型。与 java.util.Date 不同,java.sql.Date 不包含时间信息,只存储年月日。
java.sql 包中提供了三个与日期时间相关的类:
Date:表示日期,只有年月日,不支持时间精度。Time:表示时间,只有小时分钟秒,不支持日期精度。Timestamp:表示时间戳,包含年月日小时分钟秒以及毫秒。@Testpublic void test03() { // 创建 util.Date 对象 Date utilDate = new Date(); System.out.println("utilDate : " + utilDate); // 将 utilDate 转换为 sql.Date java.sql.Date sqldate = new java.sql.Date(utilDate.getTime()); System.out.println("sqldate : " + sqldate); // 创建 Time 对象 Time sqltime = new Time(utilDate.getTime()); System.out.println("sqltime : " + sqltime); // 创建 Timestamp 对象 Timestamp Timestamp = new Timestamp(utilDate.getTime()); System.out.println("Timestamp : " + Timestamp);} 由于 java.sql.Date 是 java.util.Date 的子类,直接强转即可:
Date date4 = new java.sql.Date(2343243242323L);java.sql.Date date5 = (java.sql.Date) date4;System.out.println(date4);System.out.println(date5);
可以通过以下两种方式实现转换:
util.Date 强转为 sql.Date。sql.Date 的构造函数,通过 util.Date 的时间戳来创建 sql.Date 对象。@Testpublic void test04() { // 将 util.Date 转换为 sql.Date Date date6 = new Date(); java.sql.Date date7 = new java.sql.Date(date6.getTime()); System.out.println(date6); System.out.println(date7);} 在 Java 中,SimpleDateFormat 是一个强大的日期格式化工具。可以通过它将 Date 对象格式化为任意指定的日期时间格式。
@Testpublic void test05() { Date utilDate = new Date(); System.out.println("utilDate : " + utilDate); // 创建自定义日期格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("format utilDate : " + format.format(utilDate)); // 将 utilDate 转换为 sql.Date java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); System.out.println("sqlDate : " + sqlDate); System.out.println("format sqlDate : " + format.format(sqlDate)); // 创建 Timestamp 对象 Timestamp Timestamp = new Timestamp(utilDate.getTime()); System.out.println("Timestamp : " + Timestamp); System.out.println("format Timestamp : " + format.format(Timestamp));} 通过以上内容,可以看出,java.util.Date 和 java.sql.Date 在日期时间处理中各有优势。选择合适的类,能够更高效地完成日期时间操作。
转载地址:http://yxmo.baihongyu.com/