yyyy-dd-MM
、yyyy-MM-dd
などのさまざまな形式の日付を含むデータがありますEEE dd-MM-yy
。
dd-MM-yyyy
とを区別する方法を見つけようとしていますMM-dd-yyyy
。dd が 12 未満の場合、形式について確信を持てる方法がないことは理解していますが、dd > 12 の他のケースを特定することで、間違った計算を最小限に抑えることができます。
私はこれを試しました -
SimpleDateFormat targetFormat = new SimpleDateFormat("EEE, yyyy-MMM-dd hh:mm:ss a");
SimpleDateFormat originalFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat originalFormat2 = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");
Calendar cal = Calendar.getInstance();
try {
Date date = originalFormat1.parse(s); //I tried with s = "2013-25-8 20:10:00";
cal.setTime(date);
if (cal.get(Calendar.DAY_OF_MONTH) > 12)
date = originalFormat2.parse(s);
System.out.println(targetFormat.format(date));
} catch (ParseException e) {
System.out.println("Error");
出力
私は期待していた: Sun, 2013-Aug-25 08:10:00 PM
しかし、私は得ました: Thu, 2015-Jan-08 08:10:00 PM