Java日期计算
我有一个数据库字段,其中日期存储为DD/MM/YYYY格式。现在我想做的是看看今天的日期是否=存储的日期-1。基本上如果今天是结束日期的前一天。基于此,我将采取一些行动 格式示例:Java日期计算,java,date,Java,Date,我有一个数据库字段,其中日期存储为DD/MM/YYYY格式。现在我想做的是看看今天的日期是否=存储的日期-1。基本上如果今天是结束日期的前一天。基于此,我将采取一些行动 格式示例: 10/02/2012 此处存在格式问题,因为我正在使用: Date todayDate; 存储的日期是VARCHAR2,单位为DB。我假设我必须将检索到的日期转换为日期常规格式,或者类似的格式。我们将不胜感激 更新: currentEndDate = rset.getString
10/02/2012
此处存在格式问题,因为我正在使用:
Date todayDate;
存储的日期是VARCHAR2,单位为DB。我假设我必须将检索到的日期转换为日期常规格式,或者类似的格式。我们将不胜感激
更新:
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()函数实现了这一点。现在如何检查结束日期-1==今天日期?因为当我尝试时:
if(today.equals(cal.add(Calendar.date, -1)))
它表示从add函数返回void。
谢谢,您可以直接在数据库中使用
Date
类型,您可以直接将其作为java中的Date
实例使用您可以直接在数据库中使用Date
类型,您可以直接将其作为java中的Date
实例使用您需要将字符串转换为日期。您可以在查询中或在获得字符串结果后执行此操作:
选项1:在查询中将其转换为日期类型:
SELECT TO_DATE("COLNAME", 'MM/DD/YYYY') FROM "MYTABLE"
选项2:获取字符串后将其转换为日期类型:
String date_from_db;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date date = sdf.parse(date_from_db);
然后您可以查看当前时间(newdate()
)是否介于检索到的日期和该日期前一天之间。如果您想处理包括闰秒在内的所有转角情况,您必须使用日历
,但如果您不介意省略闰秒,则只需从数据库日期中减去24*60*60*1000毫秒即可
您不能根据以下条件直接比较日期
和日历
:
…当且仅当getTime方法为两个对象返回相同的长值时,对象才相等
此外,日历
也不起作用:
当且仅当参数是表示相同时间值的同一日历系统的日历对象时,结果才为真
简单的解决方案:使用日历的getTime()
方法,返回一个Date
对象,该对象将使用equals()
、after()
和before()
与其他日期进行比较
或在代码中:
cal.add(Calendar.DAY, -1);
if(cal.getTime().equals(new Date())) { ... }
您还可以实例化另一个日历
并使用其设置时间()
,但这似乎效率较低。您需要将字符串转换为日期。您可以在查询中或在获得字符串结果后执行此操作:
选项1:在查询中将其转换为日期类型:
SELECT TO_DATE("COLNAME", 'MM/DD/YYYY') FROM "MYTABLE"
选项2:获取字符串后将其转换为日期类型:
String date_from_db;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
Date date = sdf.parse(date_from_db);
然后您可以查看当前时间(newdate()
)是否介于检索到的日期和该日期前一天之间。如果您想处理包括闰秒在内的所有转角情况,您必须使用日历
,但如果您不介意省略闰秒,则只需从数据库日期中减去24*60*60*1000毫秒即可
您不能根据以下条件直接比较日期
和日历
:
…当且仅当getTime方法为两个对象返回相同的长值时,对象才相等
此外,日历
也不起作用:
当且仅当参数是表示相同时间值的同一日历系统的日历对象时,结果才为真
简单的解决方案:使用日历的getTime()
方法,返回一个Date
对象,该对象将使用equals()
、after()
和before()
与其他日期进行比较
或在代码中:
cal.add(Calendar.DAY, -1);
if(cal.getTime().equals(new Date())) { ... }
您还可以实例化另一个日历
并使用其设置时间()
,但这似乎效率较低。与时间相关的JDBC类型有三种:
JDBC DATE类型表示由日、月和年组成的日期。SQL-92中定义了相应的SQL日期类型,但它仅由主要数据库的一个子集实现。有些数据库提供支持类似语义的替代SQL类型
JDBC TIME类型表示由小时、分钟和秒组成的时间。SQL-92中定义了相应的SQL时间类型,但它仅由主要数据库的一个子集实现。与DATE一样,一些数据库提供支持类似语义的可选SQL类型
JDBC TIMESTAMP类型表示日期加时间加纳秒字段。SQL-92中定义了相应的SQL时间戳类型,但它仅由极少数数据库实现李>
由于标准Java类Java.util.Date
与这三种JDBC日期/时间类型中的任何一种都不完全匹配(它包括日期和时间信息,但没有纳秒),JDBC定义了Java.util.Date
的三个子类来对应SQL类型。它们是:
java.sql.Date
获取sql日期信息。java.util.Date基类的小时、分钟、秒和毫秒字段应设置为零。如果提供给java.sql.Date构造函数的毫秒数为负数,则驱动程序会将日期计算为1970年1月1日之前的毫秒数。否则,将按照1970年1月1日之后的指定毫秒数计算日期
java.sql.Time
获取sql时间信息。java.util.Date基类的年、月和日字段设置为1970、一月和1。这是Java时代的“零”日期
java.sql.Timestamp
获取sql时间戳信息。此类通过添加纳秒字段来扩展java.util.Date李>
所有三个JDBC时间相关类都是java.util.Date
的子类,因此,它们可以在需要java.util.Date
的地方使用。例如,国际化方法采用j