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

如果需要,请使用以下格式和区域设置

new SimpleDateFormat("dd'th' MMM YYYY");
于 2013-10-08T11:05:37.940 回答
0

只需添加到您的formatStrings以下模式"dd'th' MMM yyyy"。好吧,但它不会解决日期之类的问题01st Oct 2013and 02nd 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 回答
0
String date =  "06th Oct 2013";
date = date.substring(0,2) + date.substring(4);

这将删除日期中阻碍解析的 th 或任何字符。

于 2013-10-08T10:43:04.797 回答