我正在使用一个使用大量DateTimeFormat解析的软件,为了最大限度地减少错误,我想知道我是否能以某种方式呈现日期字符串,它可以被任何DateTimeFormat模式解析。理想情况下,它应该如下工作:
String date = "...."
DateTimeFormatter format = DateTimeFormat.forPattern(any pattern I want);
DateTime result = format.parseDateTime(date);
或者日期必须遵循这种模式?谢谢你的帮助
答案 0 :(得分:1)
不,你不可能得到一个尺码。想想你的字符串是不是合法的日期,比如“hello”,你打算如何解析它?
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");