有没有一种方法可以用Java确定类似.Net的日期格式?
考虑以下示例:
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
,而不是严格提供两种格式?
答案 0 :(得分:1)
我对你的问题很感兴趣,所以检查了JavaDoc的SimpleDateFormat,DateFormat,Date和Calendar,看看我是否可以解决这个问题。
如果您知道传入的日期字符串将始终采用适合当前Locale的格式,则可以使用DateFormat中的工厂方法GetDateInstance方法。
除此之外......我不得不说不。至少我不知道。
我会感兴趣地看这个问题。
答案 1 :(得分:1)
我能想到的最好的方法是旧的Date(String)
构造函数,它依赖于静态方法Date.parse(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?