java日期转换

最近遇到一个需求:需要从oracle数据库中取出每条记录的一个时间值,然后判断这个时间值是否小于当月第一天的凌晨零点零分零秒

那么问题就来了:

问题一:需要获取数据库中的时间字段,而且还要保存到java代码中

问题二:获取当前月份第一天凌晨零点零分零秒时刻

问题三:比较两个时间


依次解决上面个的问题:

问题一:程序中使用的是mybatis与oracle数据库交互,所以配置了一个resultMap来匹配获取到时间字段,

<resultMap id="resultDate" resultClassType="map">

    <result column="datetime" jdbcType="TIMESTAMP" property="datetime"></result>

</resultMap>

然后在查询配置中选择上面的返回类型就行了,好了从数据库中获取时间完成了,最后获取到的时间格式是这样:yyyy-MM-dd HH-mm-ss.SSS

问题二:获取当前月份的第一天需要用到Calendar类,然后用SimpleDateFormat类的format方法将时间转换成上面的格式:yyyy-MM-dd HH-mm-ss.SSS
问题三:用SimpleDateFormat类的parse方法将上面格式的字符串时间转换成Date类型的时间,然后用Date类的before方法和equals方法比较两个时间

如此,大功告成啦。

java代码如下:

String expDate = offerInfoDAO.queryProdOfferInstExpDate(null, offerInstId); // 获取数据库中的失效时间
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.DAY_OF_MONTH, 1);//获取当前月第一天
//刚开始没想到好的方案,准备把时间转换成字符串的格式,然后比较两个时间字符串,总感觉很别扭,不专业,后来看见了一篇处理java时间的文章,启发了新方案
// String firstDateOfMonth = new SimpleDateFormat("yyyyMMdd").format(cal.getTime() + "000000");// 获取本月月初时间
// if (!expDate.equals(null) &&
// expDate.compareTo(firstDateOfMonth) <= 0)
// continue;
Date date2expDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(expDate);//将数据库中获取到的时间转换成日期格式
//将当月第一天转换成指定格式的日期格式
Date firstDateOfMonth = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime() + " 00:00:00.000"));
if(date2expDate.before(firstDateOfMonth) || date2expDate.equals(firstDateOfMonth))continue;//最后比较两个时间点



参考文章:Java日期转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值