2

yyyy-dd-MMyyyy-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

4

3 に答える 3

0

ねえ、実際には月として25を取っているので、12 + 12 + 1は2年と1か月、つまり「1月」を意味するので、日付は「Thu Jan 08 20:10:00 GMT 2015」になり、変更すると再び"targetFormat" に、この異常な結果が続きます...

于 2013-09-27T13:54:15.607 に答える