簡體   English   中英

使用格式解析長日期到Date對象

[英]Parsing long to a Date object with formatting

我正在嘗試使用格式化將一個長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

有什么想法我得到這種結果?

只有在輸出日期時才應用該格式(實際上它用於將日期轉換為字符串)。 它不會更改日期的內部表示。

在您的情況下, formattedDate對象不會受到format任何影響。

查看字符串表示的方法是這樣的:

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

這就像一個數字的基礎。 您有許多不同的可視化,如101(2)5(10) ,但它們只有在顯示數字時才有意義。 否則,更改基數時,數字本身的值不會更改。

你返回你的初始日期...改為:

return formatter.format(formattedDate);

您正在返回一個日期對象,但您需要的是從使用毫秒值創建的創建日期對象返回的格式化日期字符串。

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

你的問題是formatter.format(...)返回一個String ,這是你應該在函數中返回的(你實際上返回了Date實例)

這一行:

formatter.format(formattedDate);

返回String(格式化日期)。 你返回的是Date對象(它本身沒有格式化)。 您應該返回從格式化程序返回的String。

您正在返回Date的對象。 日期是時間點的抽象表示,沒有任何有關格式的信息。 您需要返回從格式化程序獲得的String - 這是時間的格式化表示(但另一方面不包含有關時間的信息 - 您必須將其解析回來以獲取它所代表的Date對象)。

Date沒有自己的格式,它是執行格式化的SimpleDateFormat

當你調用formatter.format(formattedDate)它會返回一個格式化的String ,但是你忽略了返回的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM