私のプログラムは、黒澤を生成(生産)して顧客に提供させることです。Javaでの日付計算、今日から3ヶ月追加
私たちは黒澤氏を生成するたびに、製造日から3ヶ月間のIDとその製造日と有効期限を印刷する必要があります。
私の問題は:3ヶ月後の日付はどのようにして計算できますか?
私のプログラムは、黒澤を生成(生産)して顧客に提供させることです。Javaでの日付計算、今日から3ヶ月追加
私たちは黒澤氏を生成するたびに、製造日から3ヶ月間のIDとその製造日と有効期限を印刷する必要があります。
私の問題は:3ヶ月後の日付はどのようにして計算できますか?
私はJava Calendar Libraryがあなたに役立つと信じています。
組み込みのJava Calendar APIを使用してください。
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 3);
あなたが探している形式で日付を正確に印刷する方法については、APIを参照してください。
あなたもはるかに強力かつ簡単Joda Time Libraryを使用するために使用することができます
DateMidnight productionDate = new DateMidnight();
DateMidnight expirationDate = productionDate.plusMonths(3);
System.out.println(expirationDate.toString("dd.MM.yyyy"));
ジョダ時間は内蔵のJava Calendar API.
Jodaを3ヶ月追加するだけの簡単な方法はなぜですか? – javashlook
あなたは正しいですが、3ヶ月をjava.util.Date/Calendarに追加すると、エラーが発生しやすい同じインスタンスを操作します。 Joda-Timeオブジェクトは不変です。そして、私はあなたが通常3ヶ月を追加するよりも日付のものよりも何かをやると思います。 Java7にJoda-Time(JSR310)が含まれることを願っています –
あなたは日付算術で作業する必要がある場合ジョダの作品に比べて多くの利点を持っていますカレンダーはタイムスタンプが好きです。
/JavaクラスCalendarは抽象クラスです。したがって、GregorianCalendarクラスを使用する必要があります。/
java.util.GregorianCalendar gC = new java.util.GregorianCalendar();
java.util.Date yourDate = new java.util.Date();
gC.setTime(yourDate);
//
1週間バックgC.add(java.util.Calendar.WEEK_OF_YEAR, -1);
[getInstance](http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getInstance%28%29 )メソッドは静的なので、使用することができます。 – KSev
getInstance()は静的なファクトリメソッド(有効なJava、Joshua Blochを参照)で、ロケールの最適な時刻を決定するためです。 –
gC.add(java.util.Calendar.MONTH_OF_YEAR, 3);
/を追加します。DR
LocalDate.now() // Determine today’s date.
.plusMonths(3) // Add three months.
現代のアプローチでは、java.timeクラスを使用しています。
LocalDate
クラスは、タイムゾーンのない時間帯のない日付のみの値を表します。
タイムゾーンは、日付を決定する際に重要です。任意の瞬間について、日付は地球の周りでゾーンごとに異なります。たとえば、Paris Franceの真夜中の数分後には、新しい日がありますが、まだ「昨日」はMontréal Québecです。
タイムゾーンが指定されていない場合、JVMは現在のデフォルトタイムゾーンを暗黙的に適用します。そのデフォルトはいつでも変更される可能性がありますので、結果は異なる場合があります。期待どおりのタイムゾーンを明示的に引数として指定する方がよいでしょう。
は、America/Montreal
、Africa/Casablanca
、又はPacific/Auckland
として、continent/region
の形式でproper time zone nameを指定します。EST
またはIST
のような3〜4文字の略語は、ではなく、のように、標準化されておらず、ユニークではない(!)と使用しないでください。
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
3ヶ月間を追加すると、java.timeが数式を実行します。
LocalDate threeMonthsLater = today.plusMonths(3) ;
java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date
、Calendar
、& SimpleDateFormat
などの面倒な古いlegacy日時クラスに取って代わります。
にあるJoda-Timeプロジェクトは、java.timeクラスへの移行を推奨しています。
詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。
ここで、java.timeクラスを取得するには?
ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、Interval
、YearWeek
、YearQuarter
、moreなどの便利なクラスがあります。
ところで、黒澤とは何ですか? –
Wikipediaによると、日本の長野県佐久市で醸造された酒です。 –