如何从给定的字符串中获取日期部分?

时间:2012-05-15 13:05:46

标签: java date-parsing

我有这样的字符串:

Mon, 14 May 2012 13:56:38 GMT

现在我只想要日期,即14 May 2012

我应该为此做些什么?

4 个答案:

答案 0 :(得分: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

此代码

  • 更容易维护(如果输出格式稍有变化,输入格式会被保留,反之亦然?)
  • 可以说更容易阅读

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

答案 1 :(得分:5)

为什么不使用parse()DateFormat字符串,它将为您提供Date个对象。将此Date提供给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,可以很容易地给你任何你想要的字段(例如,如果你想用其中一个来执行某些处理字段值)。它也可以用于计算或许多其他目的。这取决于你拥有日期之后想要做什么。

答案 2 :(得分:1)

由于这是一个固定长度的字符串,您可以使用substring()

String input = "Mon, 14 May 2012 13:56:38 GMT";
String output = input.substring(5, 16);

答案 3 :(得分:-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();