3

java.util.Date を java.sql.Date に変換するプログラムを書いています...

getTime() メソッドを使用して実行しました...

           java.util.Date dt = new java.util.Date();
           java.text.DateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy");
           dt=df.parse("06/12/0785");
           java.sql.Date sqldate = new java.sql.Date(dt.getTime());
           System.out.print("\n\n\n "+dt.getTime()+"    "+sqldate);

の負の値を取得してdt.getTime()いますが、値は正しいですsqldate...

私の疑問は

           `Is it safe to use negative seconds as epoch or is it vulnerable to bugs while implementing it in database in any way.....???

例に記載されている日付の代わりに、日付の設定でsqldateの間違った日付を出力してい00/00/0000ます....何が原因でしょうか...そして解決策はありますか...???

4

4 に答える 4

1

ええと、エポックタイムでは、「0」は1970年1月1日に相当します。それより前の日付は、解析しようとすると負になります。

解析している日付文字列を1970年以降の日付に変更してみてください。そうすれば、適切な値が得られます。

于 2012-06-27T18:11:48.593 に答える
1

ドキュメントによると、負の値はjava.sql.DateのコンストラクターとsetTimeメソッドに有効です。

http://docs.oracle.com/javase/6/docs/api/java/sql/Date.html#setTime(long

「00/00/0000」を日付として使用することは、月、日、または年がゼロではないため、問題になると思います。

http://en.wikipedia.org/wiki/0_(year

于 2012-06-27T18:11:56.817 に答える
1

「00」を月として解析すると、12 月と見なされます。日「00」は前月の最終日であるため、組み合わせは 11 月 30 日として解析されます。ゼロ年については、 Java の Year 0000 を参照してください。.getTime() の負の値はまったく問題ありません。

于 2012-06-27T18:25:32.577 に答える