gpt4 book ai didi

Java日期计算

转载 作者:行者123 更新时间:2023-12-01 19:07:41 24 4
gpt4 key购买 nike

我有一个数据库字段,其中日期存储为 DD/MM/YYYY 格式。现在我想做的是看看今天的日期是否 = 存储的日期 - 1。基本上今天是否是结束日期的前一天。在此基础上我将采取一些行动...

格式示例:

10/02/2012

这里存在格式问题,因为我使用的是这个:

Date todayDate;

数据库中存储的日期是VARCHAR2。假设我必须将检索到的日期转换为日期常规范式或类似的格式。如有帮助,我们将不胜感激。

更新:

                currentEndDate =  rset.getString("ENDDATE");
endDate = (Date)formatter.parse(currentEndDate);
/*Check if end date = today date - 1*/
Calendar cal = Calendar.getInstance();
//set to end date
cal.setTime(endDate);
//end date - 1
cal.add(Calendar.DATE, -1);
Date today;

现在这就是我所拥有的......我试图在这里获取结束日期-1,所以我使用 add() 函数来做到这一点。现在如何检查 end-date - 1 == 今天日期是否?因为当我尝试时:

if(today.equals(cal.add(Calendar.date, -1)))

它表示从 add 函数返回 void。谢谢,

最佳答案

与时间相关的 JDBC 类型共有三种:

  1. JDBC DATE 类型表示由日、月和年组成的日期。相应的 SQL DATE 类型在 SQL-92 中定义,但仅由主要数据库的一个子集实现。某些数据库提供支持类似语义的替代 SQL 类型。
  2. JDBC TIME 类型表示由小时、分钟和秒组成的时间。相应的 SQL TIME 类型在 SQL-92 中定义,但仅由主要数据库的一个子集实现。与 DATE 一样,某些数据库提供支持类似语义的替代 SQL 类型。
  3. JDBC TIMESTAMP 类型表示 DATE 加 TIME 加纳秒字段。相应的SQL TIMESTAMP类型在SQL-92中定义,但只有极少数数据库实现。

因为标准Java类java.util.Date与这三种 JDBC 日期/时间类型中的任何一种都不完全匹配(它包括 DATE 和 TIME 信息,但没有纳秒),JDBC 定义了 java.util.Date 的三个子类与 SQL 类型相对应。他们是:

  1. java.sql.Date用于 SQL 日期信息。 java.util.Date 基类的小时、分钟、秒和毫秒字段应设置为零。如果提供给 java.sql.Date 构造函数的毫秒数为负数,则驱动程序会将日期计算为 1970 年 1 月 1 日之前的毫秒数。否则,日期将计算为 1 月 1 日之后指定的毫秒数, 1970 年。
  2. java.sql.Time获取 SQL TIME 信息。 java.util.Date 基类的年、月、日字段设置为 1970 年、一月和 1。这是 Java 纪元中的“零”日期。
  3. java.sql.Timestamp用于 SQL TIMESTAMP 信息。此类通过添加纳秒字段来扩展 java.util.Date。

所有三个 JDBC 时间相关类都是 java.util.Date 的子类,因此,它们可以用在 java.util.Date 的地方。是期待。例如,国际化方法采用 java.util.Date对象作为参数,因此可以将任何 JDBC 时间相关类的实例传递给它们。

JDBC Timestamp 对象具有其父对象的日期和时间组件以及单独的纳秒组件。如果 java.sql.Timestamp对象用于 java.util.Date 的地方预期对象,纳秒部分丢失。

但是,自从 java.util.Date对象以一毫秒的精度存储,在转换 java.sql.Timestamp 时可以保持这种精度。反对java.util.Date目的。这是通过将纳秒分量中的纳秒转换为整毫秒(通过将纳秒数除以 1,000,000)然后将结果添加到 java.util.Date 来完成的。目的。此转换中最多可能会丢失 999,999 纳秒,但生成的 java.util.Date对象将精确到一毫秒内。

以下代码片段是转换java.sql.Timestamp的示例反对java.util.Date精确到一毫秒内的对象。

Timestamp t = new Timestamp(98724573287540L);
java.util.Date d;
d = new java.util.Date(t.getTime() + (t.getNanos() / 1000000));

关于Java日期计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com