方法:sdf.parse(dateStr)メソッドが返すDateタイプ時間データ:Fri May 10 00:00:00 CST 2019から:yyyy-MM-dd形式のDateタイプデータへ

1267 ワード

背景:
まず、Dateタイプでyyyy-mm-dd形式の時間データが必要です.次は問題の発生と解決方法の詳細です.
データベースにはdateタイプの時間データが保存されています(フォーマットはyyyy-MM-dd、例:2019-05-10)
JAvaバックグラウンドでは、この時間データを検出し、Java.Util.Dateタイプで保存されたbeanオブジェクトキャッシュに捨て、フロントに捨てる必要があります.
しかし、バックグラウンドでデータベースから取り出した時間データをbeanに捨てて保存したデータは、2019-05-10 00:00:00:00:00:00:00である.
それから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();
}