クレジット カードの有効期限の新しい Date オブジェクトを生成する必要があります。月と年しかありません。この 2 つに基づいて Date を生成するにはどうすればよいですか? できるだけ簡単な方法が必要です。ここで他の回答を読んでいましたが、それらはすべて洗練されすぎているようです。
6 に答える
使用できますjava.util.Calendar
:
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
Date date = calendar.getTime();
java.time
java.time
Java 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
あなたが を求めたのでおそらく答えではありませんが、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")
このバージョンのコンストラクターは非推奨であるため、使用しないでください。日付フォーマッタを作成して を呼び出す必要がありますparse
。year
おそらく整数値としてandを持ちmonth
、適切にパディングして区切られた適切な文字列を作成する必要があるため、これは良いアドバイスです。そのため、これらすべてを完全に処理する方法を知っている日付フォーマッターを使用してください。
他の以前の回答は、これを行う方法を示しました。
好き
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で日付を作成する正しい方法は何ですか?からコピーされました。
最も一般的なアプローチは、非推奨であっても Date("YYYY-MM-DD") コンストラクターを使用することです。これは、その場で日付を作成する最も簡単な方法です。それを廃止することに決めた人は誰でもねじ込みます。長生きする日付("YYYY-MM-DD")!!!