博客
关于我
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/

    你可能感兴趣的文章
    Qt开发——简易网络浏览器(一)
    查看>>
    Qt开发——简易成绩登记系统
    查看>>
    Postgresql中PL/pgSQL代码块的语法与使用-声明与赋值、IF语句、CASE语句、循环语句
    查看>>
    Postgresql中PL/pgSQL的游标、自定义函数、存储过程的使用
    查看>>
    Postgresql中的表结构和数据同步/数据传输到Mysql
    查看>>
    Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系“xxx_xx_xx_seq“不存在
    查看>>
    postgreSQL入门命令
    查看>>
    PostgreSQL删除数据库报"ERROR: There is 1 other session using the database."
    查看>>
    Qt开发——爱情公寓人事管理系统
    查看>>
    PostgreSQL和Oracle两种数据库有啥区别?如何选择?
    查看>>
    Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入
    查看>>
    PostgreSQL在何处处理 sql查询之四
    查看>>
    postgresql基本使用
    查看>>
    PostgreSQL学习总结(10)—— PostgreSQL 数据库体系架构
    查看>>
    PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案
    查看>>
    Qt开发——多线程网络时间客户端
    查看>>
    PostgreSQL学习总结(13)—— PostgreSQL 15.8 如何成就数据库性能王者?
    查看>>
    PostgreSQL学习总结(13)—— PostgreSQL 目录结构与配置文件 postgresql.conf 详解
    查看>>
    PostgreSQL学习总结(1)—— PostgreSQL 入门简介与安装
    查看>>
    PostgreSQL学习总结(2)—— PostgreSQL 语法
    查看>>