我有一个Timestamp和Date变量,我想比较它的相等性(当然只有日期部分).令我惊讶的是,构造函数Date(long)节省了时间部分,所以这段代码不正确:
date = resultSet.getDate(1);
timestamp = resultSet.getTimestamp(2);
//...
if (date.equals(new Date (timestamp.getTime())) ...
Run Code Online (Sandbox Code Playgroud)
我用以下代码解决这个问题:
DateFormat dateFormat = new SimpleDateFormat ("yyyyMMdd");
if (date.equals(dateFormat.parse(dateFormat.format(timestamp)))) ...
Run Code Online (Sandbox Code Playgroud)
或者我可以在sql查询中将时间戳转换为日期,但我也需要时间戳表示.有没有更好的方法来从时间戳中删除时间部分.
Java 8转换方法:
Date date = Date.valueOf(timestamp.toLocalDateTime().toLocalDate());
Run Code Online (Sandbox Code Playgroud)
反之亦然:
Timestamp timestamp = Timestamp.valueOf(date.toLocalDate().atStartOfDay());
Run Code Online (Sandbox Code Playgroud)
对于这个,你有三种选择。
首先是使用 Yoda 时间和类DateTimeComparator.getDateOnlyInstance()
第二种是使用 apache 和DateUtils.isSameDay()中的公共资源
第三,使用[日历]并设置时间并仅比较年月日。正如戴夫·韦伯提议的那样。
| 归档时间: |
|
| 查看次数: |
16195 次 |
| 最近记录: |