Java 中 java.sql.Time、java.sql.Timestamp 和 java.sql.Date 的区别


在 Java 编程的世界中,处理日期和时间是一项常见的任务。java.sql 包提供了三个类 - java.sql.Time、java.sql.Timestamp 和 java.sql.Date - 它们专门用于处理日期和时间的不同方面。但是,了解这些类之间的区别对于确保在 Java 应用程序中对时间信息进行准确处理至关重要。在本文中,我们将探讨每个类的细微差别,并检查其独特的功能。

方法

在处理时间信息时,根据应用程序的特定需求选择正确的类至关重要。java.sql 包中的每个类都满足特定的需求并提供不同的功能。通过了解它们之间的差异,您可以选择合适的类并有效地利用其功能。

常用算法和语法

对于一般的日期和时间操作,您可以使用 'java.util.Date' 类,它是 'java.sql.Time'、'java.sql.Timestamp' 和 'java.sql.Date' 的基类。

语法(创建日期对象)

java.util.Date date = new java.util.Date();

语法(获取当前日期和时间)

java.util.Date currentDate = new java.util.Date();

算法

  • 创建一个 'java.util.Date' 类的实例。

  • 以下代码表示当前日期和时间。

  • 您可以对 'java.util.Date' 对象执行各种操作,例如格式化、比较和操作。

方法类型

java.sql.Time

java.sql.Time 类表示一天中的特定时间,以小时、分钟和秒表示。

它扩展了 java.util.Date 类,并提供了毫秒级的精度。

它不存储有关日期部分的信息,仅存储时间。

语法

java.sql.Time time = new java.sql.Time(hours, minutes, seconds);

算法

  • 创建一个新的 java.sql.Time 类的实例。

  • 创建一个新的 java.sql.Time 类实例。

  • 将小时、分钟和秒作为参数传递给构造函数。

示例

import java.sql.Time;

public class TimeExample {
   public static void main(String[] args) {
      // Creating a Time object
      Time time = new Time(System.currentTimeMillis());
        
      System.out.println("Current Time: " + time);
        
      // Extracting individual components
      int hours = time.getHours();
      int minutes = time.getMinutes();
      int seconds = time.getSeconds();
        
      System.out.println("Hours: " + hours);
      System.out.println("Minutes: " + minutes);
      System.out.println("Seconds: " + seconds);
   }
}

输出

Note: TimeExample.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Current Time: 11:46:05
Hours: 11
Minutes: 46
Seconds: 5

java.sql.Timestamp

java.sql.Timestamp 类扩展了 java.util.Date,并提供了纳秒级的精度。

它表示一个特定的时刻,包括日期和时间部分。

它能够保存到纳秒级,并且可以处理各种日期。

语法

java.sql.Timestamp timestamp = new java.sql.Timestamp(year, month, day, hours, minutes, seconds, nanoseconds);

算法

  • 创建一个 java.sql.Timestamp 类的实例。

  • 将年份、月份、日期、小时、分钟、秒和纳秒作为参数传递给构造函数。

  • 以下代码表示一个特定的时刻,包括日期和时间部分,并具有纳秒级的精度。

示例

import java.sql.Timestamp;

public class TimestampExample {
   public static void main(String[] args) {
      // Creating a Timestamp object
      Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        
      System.out.println("Current Timestamp: " + timestamp);
        
      // Extracting individual components
      int year = timestamp.getYear() + 1900; // Adding 1900 as getYear() returns the year since 1900
      int month = timestamp.getMonth() + 1; // Adding 1 as getMonth() returns zero-based month
      int day = timestamp.getDate();
      int hours = timestamp.getHours();
      int minutes = timestamp.getMinutes();
      int seconds = timestamp.getSeconds();
        
      System.out.println("Year: " + year);
      System.out.println("Month: " + month);
      System.out.println("Day: " + day);
      System.out.println("Hours: " + hours);
      System.out.println("Minutes: " + minutes);
      System.out.println("Seconds: " + seconds);
   }
}

输出

Note: TimestampExample.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Current Timestamp: 2023-07-31 11:47:08.731
Year: 2023
Month: 7
Day: 31
Hours: 11
Minutes: 47
Seconds: 8

java.sql.Date

java.sql.Date 类表示一个特定的日期(年、月、日),不包含时间部分。

它扩展了 java.util.Date,通常用于在数据集中存储和管理日期值。

它支持从 1970 年 1 月 1 日到 9999 年 12 月 31 日的日期。

语法

java.sql.Date date = java.sql.Date.valueOf("yyyy-mm-dd");

算法

  • 创建一个新的 java.sql.Date 类实例。

  • 使用 `valueOf()` 方法,并传递一个格式为 "yyyy-mm-dd" 的字符串,表示所需的日期。

  • 生成的オブジェクトは、時間コンポーネントのない特定の日期を表します。

示例

import java.sql.Date;

public class DateExample {
   public static void main(String[] args) {
      // Creating a Date object
      Date date = new Date(System.currentTimeMillis());
        
      System.out.println("Current Date: " + date);
        
      // Extracting individual components
      int year = date.getYear() + 1900; // Adding 1900 as getYear() returns the year since 1900
      int month = date.getMonth() + 1; // Adding 1 as getMonth() returns zero-based month
      int day = date.getDate();
        
      System.out.println("Year: " + year);
      System.out.println("Month: " + month);
      System.out.println("Day: " + day);
   }
}

输出

Note: DateExample.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Current Date: 2023-07-31
Year: 2023
Month: 7
Day: 31

差异表

方面

java.sql.Time

java.sql.Timestamp

java.sql.Date

表示

一天中的特定时间

时间中的特定点

特定日期

精度

毫秒

纳秒

天(最多毫秒)

日期组件

时间组件

用例

处理仅时间的值

处理日期和时间

处理仅日期的值

格式

HH:mm:ss

yyyy-MM-dd HH:mm:ss.SSS

yyyy-MM-dd

构造函数

Time(int hour, int minute, int second)

Timestamp(long milliseconds)

Date(long milliseconds)

转换为字符串

使用默认时间格式

使用默认时间戳格式

使用默认日期格式

兼容性

扩展 java.util.Date

扩展 java.util.Date

扩展 java.util.Date

结论

Java 编程需要仔细选择合适的类来有效且准确地处理时间数据。在 java.sql 领域,三个独特的类,即 java.sql.Time、java.sql.Timestamp 和 java.sql.Date,满足特定的需求。java.sql.Time 类与一天中的特定时间相关,java.sql.Timestamp 表示时间中的特定时刻,而 java.sql.Date 表示特定日期,不包括时间部分。了解使这些类不同的细微差别使开发人员能够根据其应用程序的特定需求做出明智的选择。有了这些知识,Java 程序员能够精确可靠地操纵和持久化时间数据,确保其软件系统的无缝运行。

更新于:2023-07-31

385 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告