-1

私のコード:

 SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
 Date date = new Date();

System.out.println(sdf.format(date));
System.out.println(sdf.format(sdf.parse(sdf.format(date))));

そして、この出力が得られます:

2013-02-08 15:48:37
2013-12-30 15:48:37

期待される出力:

2013-02-08 15:48:37
2013-02-08 15:48:37

日付の日と月を見てください

4

4 に答える 4

1

簡単にするために、基本的なテスト ケースを使用してみましょう。

String date = "2013-02-08 15:48:37";
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
System.out.println(sdf.parse(date));

// Output: Mon Dec 31 15:48:37 CET 2012

SimpleDateFormat Javadocによると、フォーマット指定子Yは「週の年」を示すために使用されます。「年」の正しい書式指定子は次のyとおりです。これにより、正しい出力が得られます。

sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.parse(date));

// Output: Fri Feb 08 15:48:37 CET 2013
于 2013-02-08T16:38:19.137 に答える
1

問題はメソッド「parse」に由来します

==> "指定された文字列の先頭からテキストを解析して日付を生成します。このメソッドは、指定された文字列のテキスト全体を使用しない場合があります。"

The method may not use the entire text of the given string.

私はあなたのコードを実行し、以下を得ました:

System.out.println(sdf.format(date));
System.out.println(sdf.parse(sdf.format(date)));
System.out.println(sdf.format(sdf.parse(sdf.format(date))));

結果 :

2013-02-08 14:54:39
Mon Dec 31 14:54:39 CET 2012
2013-12-31 14:54:39

ご覧のとおり、解析関数は時刻を正しく変換しますが、日付自体は変換しません。そのように使用することを意図していないため、奇妙な結果が生じると思います。

ただし、これに気付くのはこれが初めてなので、詳細を説明することはできません:)

于 2013-02-08T13:58:00.613 に答える
0

logそれがある種のロガーであると仮定すると、すべての行の日時とログレベルを出力するのが標準的な方法です。必要に応じてログからデバッグしやすくなります。

于 2013-02-08T13:47:23.280 に答える
0

これを再現できません:

public static void main(String[] args) {
    // TODO code application logic here
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date();

    Logger log = Logger.getLogger("InfoLogging");

    log.info(sdf.format(date));
    try {
        log.info(sdf.format(sdf.parse(sdf.format(date))));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

出力を与えます:

Feb 8, 2013 2:57:09 PM javaapplication2.JavaApplication2 main
INFO: 2013-02-08 14:57:08
Feb 8, 2013 2:57:09 PM javaapplication2.JavaApplication2 main
INFO: 2013-02-08 14:57:08

どのロガーを使用していますか?

于 2013-02-08T13:58:41.900 に答える