如何将:sdf.parse(dateStr)方法返回的Date类型时间数据: Fri May 10 00:00:00 CST 2019 转为:yyyy-MM-dd格式的Date类型数据

背景:

首先我的需求是:必须要一个Date类型且格式为yyyy-mm-dd的时间数据。下面是问题产生及解决办法详细

数据库保存了一个date类型的时间数据(格式为  yyyy-MM-dd,比如:2019-05-10)

java后台需要查出这个时间数据,丢给一个bean对象缓存(以Java.Util.Date类型保存),然后丢给前台。

但是后台从数据库取出时间数据丢给bean保存下来的数据确是:2019-05-10 00:00:00.0

然后我就想到用SimpleDateFormat格式化:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String a= sdf.format(date);
Date b =sdf.parse(a);

但是这里SimpleDateFormat的parse方法得到的数据确是这样的: Fri May 10 00:00:00 CST 2019

丢给前台显示不好看,不符合需求。

思路:

先把java.util.Date类型的 时间数据按要求格式化,并再次转为java.util.Date类型。

再把格式化后的java.util.Date类型时间数据 转为java.sql.Date类,就可!

完整解决代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    //格式化规则
try {
    Date date_sj = po.getSj();       //获得你要处理的时间  Date型
    String str_sj= sdf.format(date_sj );    //格式化成yyyy-MM-dd格式的时间字符串
    Date new_date_sj =sdf.parse(str_sj);            //parse成Date类型时间数据

    //最后转换成 java.sql.Date类型数据就可以了 注意:最开始时间数据类型是 java.util.Date类型  
    java.sql.Date result_sj = new java.sql.Date(new_date_sj.getTime());
    
} catch (ParseException e) { 
    e.printStackTrace();
}

 

你可能感兴趣的:(JAVA)