どうしてですか?
重要な回答はすでにコメントに記載されています。それは捨てられたコンストラクターは大丈夫です。あなたはその月を正しいものにすることができました。多くの人はそうしません。あなたは年が間違っていて、日にちが間違っています。あなたがSystem.out.printf()
を使用しているので、あなたもチェックするためにそれを使用することがあります。
// Setting to 2017, April, 12th -- NOT
Date dt = new Date(2017, 3, 11);
System.out.printf("%1$tm %1$te,%1$tY%n", dt);
これは、あなたが期待していたとして、水曜日であることを起こる
04 11,3917
すごい偶然ことを出力します。私はそれが今年は土曜日だったことを2000年2月2月12日に成立していない年2099年を通じて2001年の保持するために、この偶然の一致を疑うだろうが、:
// Incorrect attempt at setting to 2000, February, 12th
dt = new Date(2000, 1, 11);
System.out.printf("%TA%n", dt);
これは
SUNDAY
を印刷しますそして私はどうすれば周りを回ることができますか?
Java 8以降を使用できる場合は、廃止予定のコンストラクタだけでなく、Date
クラスから離れることをおすすめします。最近は、より良い選択肢がたくさんあります。
// Setting to 2999, August, 5th
LocalDate ld = LocalDate.of(2999, Month.AUGUST, 5);
System.out.println(ld);
System.out.printf("%TA", ld);
これは、私は通常、新しいクラスでDateTimeFormatter
を使用しますが、ちょうど示すように、あまりにもSystem.out.printf()
でLocalDate
働く正しい
2999-08-05
MONDAY
を印刷します。ドキュメントによれば、DayOfWeek
、Instant
、IsoEra
、LocalDate
、LocalDateTime
、LocalTime
、Month
、MonthDay
、OffsetDateTime
、OffsetTime
、Year
、YearMonth
、ZonedDateTime
、ZoneOffset
などを含む、TemporalAccessor
で動作します。
年、月、および日を使用するコンストラクタは廃止予定です。使用しないでください。 – 1615903
あなたは、2017年に日付をプリントアウトしていないか、2999であなたは 'java.util.Date'を使用して回避するためにさらに別の理由3917と4899.で日付を印刷しています。また、8月5日ではなく8月4日を印刷しようとしています。 (7月12日ではなく7月11日)、この質問を削除することをお勧めします。「私が呼び出すコンストラクタのドキュメントを読まなかったからです。最初の ';日付がちょうど'のSystem.out.println(DT)を呼び出すことによって最初に正しかったことを確認することで、これらのエラーの両方を見ているだろう –
注意。プラットホームを非難する前に*あなたの*コードが間違っていると常に仮定してください - プラットフォームが間違っていると主張するなら、まずそれを確認するためにできるすべてのことをしておかなければなりません。あなたが使っているコンストラクタは、前千年紀以降廃止されていることは言うまでもありません –