如何呈现可由Java中的任何DateTimeFormatter模式解析的日期?

时间:2014-12-11 20:30:59

标签: java datetime datetime-format

我正在使用一个使用大量DateTimeFormat解析的软件,为了最大限度地减少错误,我想知道我是否能以某种方式呈现日期字符串,它可以被任何DateTimeFormat模式解析。理想情况下,它应该如下工作:

String date = "...."
DateTimeFormatter format = DateTimeFormat.forPattern(any pattern I want);
DateTime result = format.parseDateTime(date);

或者日期必须遵循这种模式?谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

不,你不可能得到一个尺码。想想你的字符串是不是合法的日期,比如“hello”,你打算如何解析它?

java.time

Java 8及更高版本包含java.time框架(Tutorial)。 java.time formatter’s模式可能包含[]以标记可选部分。这为您提供了一些灵活性。假设您使用格式:

M[M]['/']['-']['.']d[d]['/']['-']['.']yyyy[' ']['T'][' ']h[h]:mm:ss

因此,在这种情况下,您的字符串可能有一个或两个数字指定月,日和小时。月,日和年可以由.-/分隔,依此类推。例如,对于上面的格式,将成功解析以下字符串:

1/10/1995 9:34:45
01-10-1995 09:34:45
01.10.1995T09:34:45

......等等。

我写了一个包含一组模式的实用程序。一旦获得String,它就会尝试使用集合中的所有模式对其进行解析,并查看它是否与其中一个成功。如果正确编写了这样一组模式,则可以确保您的util支持表示有效日期的任何可能的String。

答案 1 :(得分:0)

SimpleDateFormat允许您设置自己的日期模式。例如dd / mm / yyyy,mm / dd / yyyy,yyyy-mm-dd等。 这个link可以让您更好地了解日期模式以及如何使用它

答案 2 :(得分:-1)

使用SimpleDateFormat

SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");
Date d=sdf.parse("07/12/2014");