博客
关于我
API--02--Java.util.date与java.sql.date
阅读量:282 次
发布时间:2019-03-01

本文共 3606 字,大约阅读时间需要 12 分钟。

JDK8 之前日期时间 API

在 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.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.sql.Datejava.util.Date 的一个子类,专门用于处理与数据库相关的日期时间问题。它的主要用途是存储和传输数据库中的日期值。

    java.sql.Date 的特点

  • 精度:与 java.util.Date 一样,java.sql.Date 也可以精确到毫秒。
  • 时间格式java.sql.DatetoString() 方法返回的字符串格式为 "yyyy-MM-dd"。
  • 默认值java.sql.Date 对应的时间戳总是截断到 00:00:00,即数据库中的日期类型。
  • 与数据库的关系

    在 JDBC 中,java.sql.Date 是用来处理 SQL 语句中的日期类型。与 java.util.Date 不同,java.sql.Date 不包含时间信息,只存储年月日。

    java.sql包中的日期时间类型

    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);}

    util.Date 与 sql.Date 的相互转换

    sql.Date 到 util.Date

    由于 java.sql.Datejava.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

    可以通过以下两种方式实现转换:

  • 强转:直接将 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.Datejava.sql.Date 在日期时间处理中各有优势。选择合适的类,能够更高效地完成日期时间操作。

    转载地址:http://yxmo.baihongyu.com/

    你可能感兴趣的文章
    object references an unsaved transient instance - save the transient instance before flushing
    查看>>
    Object.keys()的详解和用法
    查看>>
    objectForKey与valueForKey在NSDictionary中的差异
    查看>>
    OBJECTIVE C (XCODE) 绘图功能简介(转载)
    查看>>
    Objective-C ---JSON 解析 和 KVC
    查看>>
    Objective-C 编码规范
    查看>>
    Objective-Cfor循环实现Factorial阶乘算法 (附完整源码)
    查看>>
    Objective-C——判断对象等同性
    查看>>
    objective-c中的内存管理
    查看>>
    Objective-C之成魔之路【7-类、对象和方法】
    查看>>
    Objective-C享元模式(Flyweight)
    查看>>
    Objective-C以递归的方式实现二叉搜索树算法(附完整源码)
    查看>>
    Objective-C内存管理教程和原理剖析(三)
    查看>>
    Objective-C实现 Greedy Best First Search最佳优先搜索算法(附完整源码)
    查看>>
    Objective-C实现 jugglerSequence杂耍者序列算法 (附完整源码)
    查看>>
    Objective-C实现1000 位斐波那契数算法(附完整源码)
    查看>>
    Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
    查看>>
    Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
    查看>>
    Objective-C实现2D变换算法(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>