4

我有这样的字符串:

Mon, 14 May 2012 13:56:38 GMT

现在我只想约会,即14 May 2012

我应该为此做些什么?

4

3 回答 3

8

正确的方法是将其解析为一个Date对象并按照您想要的方式格式化此日期对象。

DateFormat inputDF  = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z");
DateFormat outputDF = new SimpleDateFormat("d MMM yyyy");

String input = "Mon, 14 May 2012 13:56:38 GMT";
Date date = inputDF.parse(input);
String output = outputDF.format(date);

System.out.println(output);

输出:

14 May 2012

这段代码是

  • 更易于维护(如果输出格式略有变化,而输入格式保持不变怎么办?反之亦然?)
  • 可以说更容易阅读

比任何依赖于拆分字符串、固定索引上的子字符串或正则表达式的解决方案。

于 2012-05-15T13:09:44.097 回答
5

你为什么不parse()使用 String DateFormat,它会给你一个Date对象。把它Date交给 a Calendar,你就可以查询任何你想要的字段,例如get(Calendar.DAY_OF_MONTH).

像这样的东西...

SimpleDateFormat myDateFormat = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z");
Date myDate = myDateFormat.parse(inputString);

Calendar myCalendar = Calendar.getInstance();
myCalendar.setTime(myDate);

String outputDate = myCalendar.get(Calendar.DAY_OF_MONTH) + " " + 
                    myCalendar.get(Calendar.MONTH) + " " +
                    myCalendar.get(Calendar.YEAR);

写起来可能有点冗长,但至少你最终得到了一个Calendar可以轻松为你提供所需字段的字段(例如,如果你想使用其中一个字段值执行一些处理)。它也可以用于计算或许多其他目的。这真的取决于你想在拥有日期之后做什么。

于 2012-05-15T13:09:08.183 回答
-1

你可以使用这个:

String st = "Mon, 14 May 2012 13:56:38 GMT";

for(int i=0;i<=st.length();i++){

  if (st.charAt(i)==':') {

  index=i;
  index=index-2;
   break;
  }


}

String onlyDate=st.substring(4,index).trim();
于 2012-05-15T13:15:39.553 回答