使用格式解析长日期到Date对象

时间:2012-04-19 12:11:39

标签: java

我正在尝试使用格式化将一个长millesecond值解析为Date对象的函数:

public static Date parseDate(long millisec, String format) {
    try {
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        Date formattedDate = new Date(millisec);
        formatter.format(formattedDate);
        return formattedDate;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;    
}

我插入该功能的格式为:“dd-MM-yyyy HH-mm:ss” 我仍然得到这种结果格式:“Thu Apr 19 19:51:22 SGT 2012

为什么我得到这种结果的任何想法?

7 个答案:

答案 0 :(得分:1)

仅在输出日期时应用格式(实际上它用于将日期转换为字符串)。它不会改变日期的内部表示。

在您的情况下,formattedDateformat对象不会受到任何影响。

查看字符串表示的方法是这样的:

String dateString = formatter.format(formattedDate);
System.out.println(dateString);

这就像一个数字的基础。您有许多不同的可视化形式,例如101(2)5(10),但它们仅在显示数字时才有意义。否则,更改基数时,数字本身的值不会改变。

答案 1 :(得分:1)

您返回初始日期......请改为:

return formatter.format(formattedDate);

答案 2 :(得分:0)

您的问题是formatter.format(...)返回String,这是您应该在函数中返回的内容(实际返回Date实例)

答案 3 :(得分:0)

这一行:

formatter.format(formattedDate);

返回String(格式化日期)。你返回的是Date对象(它本身没有格式化)。您应该返回从格式化程序返回的String。

答案 4 :(得分:0)

您正在返回Date的对象。日期是时间点的抽象表示,没有任何有关格式的信息。您需要返回从格式化程序获得的String - 这是时间的格式化表示(但另一方面不包含有关时间的信息 - 您必须将其解析回来以获取它所代表的Date对象)。

答案 5 :(得分:0)

Date没有自己的格式,而是进行格式化的SimpleDateFormat

当您致电formatter.format(formattedDate)时,它会返回一个格式化的String,但您忽略了返回的值。

答案 6 :(得分:0)

您正在返回日期对象,但您需要的是从使用毫秒值创建的创建日期对象返回的格式化日期字符串。

String dateStr = formatter.format(formattedDate); return dateStr;