1

Javaを使用して、この「2013年10月6日」の日付を解析しようとしています。

String[] formatStrings = {"dd MMM yyyy","dd MMMM yyyy hh:mm"};
    public Date tryParse(String dateString)
    {
        for (String formatString : formatStrings)
        {
            try
            {
                return new SimpleDateFormat(formatString).parse(dateString);
            }
            catch (ParseException e) {}
        }

        return null;
    }

「ddth MMM yyyy」も試しましたが、うまくいきませんでした。

それを解析するための任意のアイデア。

答え:

文字列には引用符を使用します。

"dd'th' MMM yyyy"

4

4 に答える 4

1

DateUtils を使用できます。Dateutils を使用すると、次のようにコーディングできます。

String str = "06th Oct 2013";
String[] strArrFormat = {"dd'st' MMM yyyy","dd'nd' MMM  yyyy","dd'th' MMM  yyyy","dd'rd' MMM yyyy"};
DateUtils tmpDU = new DateUtils();
System.out.print("" + tmpDU.parseDate(str,strArrFormat));

以下も参照してください。

于 2013-10-08T10:40:08.457 に答える
0
String date =  "06th Oct 2013";
date = date.substring(0,2) + date.substring(4);

これにより、解析を妨げている日付内の th または任意の文字が削除されます。

于 2013-10-08T10:43:04.797 に答える
0

formatStrings次のパターンに追加するだけ"dd'th' MMM yyyy"です。まあ、しかしそれは日付のような問題を解決しません01st Oct 201302nd Oct 2013. などを追加できますが"dd'st' MMM yyyy"、エレガントではありません。

解決したら、この投稿を更新します。


更新 これは私にとって最適です:

  String[] formatStrings = {"dd MMM yyyy","dd MMMM yyyy hh:mm"};
  String[] forbiddenStrings = {"st","nd","rd","th"};
  public Date tryParse(String dateString)
  {
    for(String remove : forbiddenStrings) {
      dateString = dateString.replaceAll(remove,"");
    }

    for (String formatString : formatStrings)
    {
      try
      {
        return new SimpleDateFormat(formatString).parse(dateString);
      }
      catch (ParseException e) {}
    }

    return null;
  }
于 2013-10-08T10:39:48.700 に答える