23

クレジット カードの有効期限の新しい Date オブジェクトを生成する必要があります。月と年しかありません。この 2 つに基づいて Date を生成するにはどうすればよいですか? できるだけ簡単な方法が必要です。ここで他の回答を読んでいましたが、それらはすべて洗練されすぎているようです。

4

6 に答える 6

44

使用できますjava.util.Calendar

Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
Date date = calendar.getTime();
于 2012-09-19T16:39:17.390 に答える
33

java.time

java.timeJava 8 に組み込まれたフレームワークを使用する

import java.time.YearMonth;

int year = 2015;
int month = 12;
YearMonth.of(year,month); // 2015-12

からString

YearMonth.parse("2015-12"); // 2015-12

カスタム付きDateTimeFormatter

import java.time.format.DateTimeFormatter;

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM yyyy");
YearMonth.parse("12 2015", formatter); // 2015-12

変換YearMonthより標準的な日付表現に 変換することLocalDate

LocalDate startMonth = date.atDay(1); //2015-12-01
LocalDate endMonth = date.atEndOfMonth(); //2015-12-31
于 2015-11-24T11:09:07.607 に答える
5

あなたが を求めたのでおそらく答えではありませんが、Java で日付と時刻とカレンダーを扱うほとんどの作業は、おそらくJoda-Timeライブラリでjava.util.Date行うべきであることを指摘する良い機会のようです。

new LocalDate(year, month, 1)

頭に浮かぶ。

Joda-Time には、月の日付に関して他にも多くの優れた点があります。たとえば、今月の最初の日を知りたい場合は、次のように記述できます。

LocalDate firstOfThisMonth = new LocalDate().withDayOfMonth(1);

java.util.Dateコメントでは、コンストラクターに文字列を渡すことについて尋ねます。次に例を示します。

new Date("2012-09-19")

このバージョンのコンストラクターは非推奨であるため、使用しないでください。日付フォーマッタを作成して を呼び出す必要がありますparseyearおそらく整数値としてandを持ちmonth、適切にパディングして区切られた適切な文字列を作成する必要があるため、これは良いアドバイスです。そのため、これらすべてを完全に処理する方法を知っている日付フォーマッターを使用してください。

他の以前の回答は、これを行う方法を示しました。

于 2012-09-19T16:47:43.213 に答える
4

好き

SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM");
Date utilDate = formatter.parse(year + "/" + month);

年、月、日の形式からjava.util.Dateオブジェクトを作成するなど からコピー

DateTime aDate = new DateTime(year, month, 1, 0, 0, 0);

Javaで日付を作成する正しい方法は何ですか?からコピーされました。

于 2012-09-19T16:42:17.143 に答える
0

最も一般的なアプローチは、非推奨であっても Date("YYYY-MM-DD") コンストラクターを使用することです。これは、その場で日付を作成する最も簡単な方法です。それを廃止することに決めた人は誰でもねじ込みます。長生きする日付("YYYY-MM-DD")!!!

于 2012-09-19T16:58:00.740 に答える