Java Date Parse从一种格式到另一种格式

时间:2010-10-12 14:52:37

标签: java parsing datetime date

有没有一种方法可以用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,而不是严格提供两种格式?

2 个答案:

答案 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?