- PR -

月の最終日を求める。

投稿者投稿内容
Qちゃん
常連さん
会議室デビュー日: 2003/06/27
投稿数: 36
投稿日時: 2003-09-25 14:39
こんにちは。
JAVAで月の最後の日付を求める関数などあるのでしょうか?
たとえば 2003/09 → 30
     2000/02 → 29
とういう感じです。
ご存知の方がいらっしゃったらご教授お願いします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-25 14:59
そのものずばりはないでしょうが、以下のようにすれば求められると思います。
#コンパイルも実行もしていないので、間違っていたらすいません

Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH, 1);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-09-25 15:01
引用:

Qちゃんさんの書き込み (2003-09-25 14:39) より:
こんにちは。
JAVAで月の最後の日付を求める関数などあるのでしょうか?
たとえば 2003/09 → 30
     2000/02 → 29
とういう感じです。
ご存知の方がいらっしゃったらご教授お願いします。


そのようなメゾットは存在しません。
月末の日付を取得したければ、
日付を翌月の1日にセットして、1日減らすだけかと・・・。
hide_t
会議室デビュー日: 2003/07/01
投稿数: 2
お住まい・勤務地: tokyo
投稿日時: 2003-09-25 15:01
java.util.Calendar#getActualMaximum
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#getActualMaximum(int)
でどうでしょう。
Sayo
会議室デビュー日: 2003/09/24
投稿数: 12
お住まい・勤務地: 東京都
投稿日時: 2003-09-25 15:05
計算するのではだめなの?
関数は知らない。ごめんなさい。だから私は、

caseを使って1月なら31、
2月は、閏があるから
if ((YYYY % 4 == 0 && YYYY % 100 != 0) || YYYY % 400 == 0) {
 // 閏年
 retValue = 29;
} else {
 retValue = 28;
}
3月なら・・・・って12ヶ月分メソッドとかにして使ってる。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-25 15:27
引用:

hide_tさんの書き込み (2003-09-25 15:01) より:
java.util.Calendar#getActualMaximum
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#getActualMaximum(int)
でどうでしょう。



げ。リファレンスざっと見たのに見落とした…
Qちゃん
常連さん
会議室デビュー日: 2003/06/27
投稿数: 36
投稿日時: 2003-09-25 15:44
皆さんありがとうございます。
無事、月の最終日を取得することができました。

cal.setTime(date);
cal.getActualMaximum(Calendar.DAY_OF_MONTH);

というふうに。
これで取り敢えずは大丈夫のようです(^・^)
また何かありましたらよろしくお願いします。
本当にありがとうございました☆

あ!!こんなことしてよいのか・・・・
もう一つ質問があるのですが、
String型からDate型に型変換ってできるのでしょうか?


[ メッセージ編集済み 編集者: Qちゃん 編集日時 2003-09-25 15:54 ]
ニシトミ
ベテラン
会議室デビュー日: 2003/04/24
投稿数: 76
お住まい・勤務地: 千葉・東京
投稿日時: 2003-09-25 16:02
こんにちは
ニシトミです
引用:

もう一つ質問があるのですが、
String型からDate型に型変換ってできるのでしょうか?

<font size=-1>



直で型変換はできません。
Stringを引数にDateを返すメソッド作ってみては

public static Date stringToDate(String year,String month,String date){
int y = Integer.pareseInt(year);
int m = Integer.pareseInt(month);
int d = Integer.pareseInt(date);
Calendar cal = new GregorianCalendar(y, m, d);
return new Date(cal.getTime().getTime());
}

インデントができませんでした。

スキルアップ/キャリアアップ(JOB@IT)