EEE MMM dd HH:mm:ss t yyyy
在解析这个日期格式时,我有
java.lang.IllegalArgumentException: Illegal pattern character 't'
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:845)
at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:659)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:585)
at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:560)
at centina.sa.client.session.User.getUserDateTimeFormat(User.java:290)
at centina.sa.client.session.User.getUserDateTimeFormatPattern(User.java:284)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
为了避免这种情况,我想之前解析格式,如果它有效我想使用相同的 或者一些默认模式
public SimpleDateFormat testFormat( )
{
String format = "EEE MMM dd HH:mm:ss t yyyy";
String default_format = "EEE MMM dd HH:mm:ss z yyyy";
if(format is valid)
{
return format;
}
else
{
return default_format;
}
}
SimpleDateFormat DATE_FORMAT = testFormat();
public void testDate(DATE_FORMAT)
{
String date = DATE_FORMAT.format("some date");
}
如何测试格式是否有效,我将在另一个方法中格式化日期,所以在这个方法中我想解析格式
最佳答案
你可以按照这个方法尝试一下。如果您的日期 String
无法以给定格式解析,将抛出
一个 ParseException
,然后捕获 ParseException
并尝试使用其他格式。
String format = "EEE MMM dd HH:mm:ss t yyyy";
String default_format = "EEE MMM dd HH:mm:ss z yyyy";
Date date=null;
try{
date=new SimpleDateFormat(format).parse("some day");
}catch (ParseException|IllegalArgumentException e){
try {
date=new SimpleDateFormat(default_format).parse("some day");
} catch (ParseException|IllegalArgumentException e1) {
// Invalid date format
}
}
但是您应该使用正确的日期格式,否则您将收到 IllegalArgumentException
因为模式错误。
您也可以验证日期格式。只需捕获 IllegalArgumentException
即可。
您可以从 here 找到有关日期格式化程序的所有信息.
关于java - 如何解析SimpleDateFormat中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31957768/