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

Neh*_*eha 4 java date-parsing

我有这样的字符串:

Mon, 14 May 2012 13:56:38 GMT

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

我应该为此做些什么?

aio*_*obe 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);
Run Code Online (Sandbox Code Playgroud)

输出:

14 May 2012
Run Code Online (Sandbox Code Playgroud)

这段代码是

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

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


wat*_*ios 5

你为什么不parse()使用String DateFormat,它会给你一个Date对象.将其赋予Datea 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);
Run Code Online (Sandbox Code Playgroud)

可能有点冗长的写作,但至少你最终得到一个Calendar可以轻松给你任何你想要的字段(例如,如果你想使用其中一个字段值执行一些处理).它也可以用于计算或许多其他目的.这取决于你拥有日期后想要做什么.