1

長いミリ秒の値をフォーマットして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"

このような結果が得られる理由はありますか?

4

7 に答える 7

2

この形式は、日付を出力するときにのみ適用されます(実際には、日付を文字列に変換するために使用されます)。日付の内部表現は変更されません。

あなたの場合、formattedDateオブジェクトは。の影響を受けませんformat

文字列表現を確認する方法は次のとおりです。

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

これは数の底のようなものです。101(2)またはのような数字のさまざまな視覚化があります5(10)が、それらは数字を表示する場合にのみ意味があります。それ以外の場合、基数を変更しても、数値自体の値は変更されません。

于 2012-04-19T12:15:48.090 に答える
1

あなたはあなたの初期日を返します...代わりにこれを入れてください:

return formatter.format(formattedDate);
于 2012-04-19T12:15:52.243 に答える
1

日付オブジェクトを返していますが、必要なのは、ミリ秒値を使用して作成された作成済み日付オブジェクトから返されるフォーマットされた日付文字列です。

文字列dateStr=formatter.format(formattedDate); dateStrを返します。

于 2012-04-19T13:10:37.763 に答える
0

あなたの問題はそれがをformatter.format(...)返すことでStringあり、これはあなたがあなたの関数で返すべきものです(あなたは実際にDateインスタンスを返します)

于 2012-04-19T12:13:52.487 に答える
0

この行:

formatter.format(formattedDate);

文字列(フォーマットされた日付)を返します。返されるのはDateオブジェクトです(それ自体にはフォーマットがありません)。フォーマッタから返される文字列を返す必要があります。

于 2012-04-19T12:14:16.487 に答える
0

Dateのオブジェクトを返しています。日付は、フォーマットに関する情報を含まない、ある時点の抽象的な表現です。フォーマッターから取得した文字列を返す必要があります。これは、時間のフォーマットされた表現です(ただし、時間に関する情報は含まれていません。それが表すDateオブジェクトを取得するには、文字列を解析して戻す必要があります)。

于 2012-04-19T12:14:46.050 に答える
0

ADateには独自のフォーマットはなく、フォーマットを行うのはそれSimpleDateFormatです。

呼び出すformatter.format(formattedDate)と、フォーマットされたaStringが返されますが、戻り値は無視されます。

于 2012-04-19T12:14:46.140 に答える