Java 文字列→日付変換

JasperReportsで Apr 27,2017 に出力しようとしたらえらいはまった話。

JasperStudio上だと何故か出なかったので、Java側で文字列として渡そうとして..............

ちゃんとエラーを吐き出して確認しなきゃいけなかった。

Locale.US を指定しないと yyyyMMdd の文字列は  MMM dd,yyyy に parse 出来ないのと、

Locale.US の時は MMM dd,yyyy の文字列じゃないと yyyyMMdd にparse 出来なかった ので

yyyyMMdd の文字列を MMM dd,yyyy の文字列に直したいときは、

Locale.JAPAN でDate型に直してから、 Locale.USでformat してあげないといけなかったね、という事

private static void convert_date(){

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy",java.util.Locale.US);

Date now = new java.util.Date();

String date_to_string = sdf.format(now);

PRINT(date_to_string);

String string_to_date ="";

SimpleDateFormat sdf_j = new SimpleDateFormat("YYYYMMDD",java.util.Locale.JAPAN);

try{

Date tmpDate = sdf_j.parse("20170101");

string_to_date = sdf.format(tmpDate);

}catch(ParseException err){

PRINT(err.toString());

}

PRINT(string_to_date);

/*

Apr 27,2017

Jan 01,2017

ビルド成功(合計時間: 0秒)

*/

}

つらい