Java日期从一种格式解析到另一种格式
有没有一种方法可以通过类似于.Net的Java来确定日期格式?Java日期从一种格式解析到另一种格式
请看下面的例子:
private String reformatDateString(String dateParam){
if(dateParam == null || dateParam.isEmpty()){
return null;
}
try{
SimpleDateFormat inDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date fromDate = inDateFormat.parse(dateParam);
SimpleDateFormat outDateForm = new SimpleDateFormat("yy-MM-dd");
return outDateForm.format(fromDate);
} catch(ParseException e){
e.printStackTrace();
return null;
}
}
是否有解析器更简单的方法来知道inDateFormat
,而不是严格提供两种格式?
我能想到的最好方法是依靠静态方法Date.parse(String)
的旧构造函数Date(String)
。它可能会也可能不会实际支持这些语法。
从Date.parse(String)
的Javadoc:
它接受许多语法;特别是它承认IETF标准日期语法:“星期六,1995年8月12日13:30:00 GMT”。它还了解美国大陆的时区缩写,但对于一般用途,应使用时区偏移:“星期六,1995年8月12日13:30:00 GMT + 0430”(格林威治以西4小时30分钟子午线)。如果未指定时区,则假定为本地时区。 GMT和UTC被认为是等同的。
不幸的是这种方法有利于明确要求的日期格式,所以你需要使用一个辅助方法已过时。上面的代码已经是一个很好的开始,所以我建议只扩展你的代码。 .NET日期解析函数的文档可能列出了支持的格式。通过您自己的实施,格式的优先顺序将明确并且不含歧义。
快速搜索发现其他问题,表明SimpleDateFormat
是去解析日期的方式。见A non-deprecated exact equivalent of Date(String s) in Java?
我对你的问题感兴趣,所以检查了SimpleDateFormat,DateFormat,Date和Calendar的JavaDoc,看看我能否解决这个问题。
如果您知道传入的日期字符串将始终采用适合当前语言环境的格式,则可以使用DateFormat中的工厂方法GetDateInstance方法。我不得不说不。至少不是我所知。
我会感兴趣地看这个问题。