- ベストアンサー
週単位の日付の加算
すみませんが、どなたか教えて下さい。 日付の加算を4週間後、というような日付の加算をしたいのですが、 28日や31日の月があった場合、ずれてしまいます。 どのようにしたら正確なカレンダー通り加算ができるでしょうか? 「20060404」の結果が欲しいが下記だと、「20060405」となってしまう。 Calendar cal = Calendar.getInstance(); cal.set(2006,3,7); int plus = 7*4; //7日×4週間 cal.add(Calendar.DATE, plus);
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- tom11
- ベストアンサー率53% (134/251)
関連するQ&A
- Java 日付の加算がうまくいきません。。どなたか助けてください・・・
初歩的質問で申し訳ないのですが、ご存知の方ご教授ください。日付の加算についてどうしてもわからない箇所があります。 Calendar cal= Calendar.getInstance((TimeZone.getTimeZone("GMT"))); int year = 2007; int month = 1; int day = 1; cal.set(year,month,day); cal.add(Calendar.DAY_OF_MONTH,100); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); String tempDate=sdf.format(date); tempDate=2007/05/12 私が求めている結果は tempDate=2007/4/11 なのですが、tempDate=2007/05/12になってしまいます。 お願いします。 環境:WinXp pro Eclipse 3.1 JDK 1.4.2 2007/4/11は Oracle8i の実行結果です。 select to_date('2007-01-01') +100 from dual
- ベストアンサー
- Java
- 日付と曜日が合わない
javaのPGを作成しています。 内容的には1週間分のカレンダーを表示しようと思っているのですが・・・・・ Calendarクラスを使用して、対象の日付と曜日を取得しようとしているのですが、 年月日は指定のものが取得できているようなのですが、曜日だけはおそらく来月の曜日を 取ってしまっているようです。 原因がまったく分かりません。 下に、Calendarクラスを使用した部分を抜粋した ソースを記述するので、なにが原因か教えていただけないでしょうか? 【jspファイル内】 <% Calendar cal= Calendar.getInstance(); cal.set( 2010, 11, 25 ); // ※実際は変数だが、正しい値が入っているのは確認済み %> ・ ・ ・ for ( int loopCnt = 0; loopCnt < 7; loopCnt ++ ){ if ( loopCnt > 0 ){ cal.add(Calendar.DATE,1); } // デバッグ用 out.print( cal.get(Calendar.YEAR)); out.print( cal.get(Calendar.MONTH)); out.print( cal.get(Calendar.DATE)); out.print( cal.get(Calendar.DAY_OF_WEEK)); } 【実行結果】 2010 11 25 7 2010 11 26 1 2010 11 27 2 2010 11 28 3 2010 11 29 4 2010 11 30 5 2010 11 31 6
- ベストアンサー
- Java
- Javascriptで日付毎のチェックボックスを判断する方法
JAVAで予約できるカレンダーを作成するという課題が学校で出てしまい非常に困っています。 仕様: カレンダー関数により、年・月・日を取得しています。 Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); int YEAR = cal.get(Calendar.YEAR); int MONTH = cal.get(Calendar.MONTH)+1; int DATE = cal.get(Calendar.DATE); 下記の機能を”Javascript”で実現したいのですが、力不足でどうすることもできません。 実装したい機能: 予約の日付はカレンダー上にある日付毎に設置されたチェックボックスで判断します。予約できる日付は、選択した日付から前後連続した日付けのみ選択可能で、他の日付をまたいで予約することはできないようにする、というものです。 例をあげてみます。 10月10日のチェックボックスを選択したとします。選択した時点で10月の9、10、11日のみチェックボックスにチェックが可能となり、その他はdisabledにします。 次に10月11日のチェックボックスを選択すると、選択した時点で10月の9、12日が選択できるようになります。予約は連続した日付のみ可能ですので、10、11日とその他はdisabledにしなくてはなりません。 どのようなアドバイスでもかまいません。 回答をお願いします。
- 締切済み
- JavaScript
- Java CDLC 1.0 での日付計算
CLDC(携帯向けJava)での日付計算がうまくいきません。 JavaのSEでは、Calender.addなる日付計算関数があるようですが、 CLDC(携帯向けJava)では使えないみたいなので、以下の実験コードを 書いてみました。しかし、意図する結果が得られませんでした。 このケースでのよい計算方法をご存知でしたらご教授 頂ければうれしく思います。または、 以下のプログラムのバグ、ポカアホミス、作法的要修正点、 日付計算仕様的な可能/不可能等お気づきありましたら、 ご指摘頂ければ嬉しいです。 尚、意図した結果とは、下記の★部分において、 1970年1月1日(?曜日) 0:1:0 です。 グリニッジ標準時 1970 年 1 月 1 日 0:00:00 (エポック) からの 経過時間が、60000ミリ秒(60秒) というのを期待しました。 --以下コード-- void print_cal(Calendar cal){ String WEEK=" 日月火水木金土"; int year =cal.get(Calendar.YEAR); int month =cal.get(Calendar.MONTH)+1; int day_of_month=cal.get(Calendar.DAY_OF_MONTH); int day_of_week =cal.get(Calendar.DAY_OF_WEEK); int hour =cal.get(Calendar.HOUR_OF_DAY); int minute =cal.get(Calendar.MINUTE); int second =cal.get(Calendar.SECOND); System.out.println("" + year + "/" + month + "/" + day_of_month + "(" + WEEK.charAt(day_of_week) + ") " + hour + ":" + minute + ":" + second); } Calendar cal = Calendar.getInstance(); long now = cal.getTime().getTime(); print_cal(cal); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 12); cal.set(Calendar.SECOND, 44); print_cal(cal); //<---- 2007/5/31(木) 6:12:44 long time1 = cal.getTime().getTime(); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 13); cal.set(Calendar.SECOND, 44); long time2 = cal.getTime().getTime(); print_cal(cal); //<------ 2007/5/31(木) 6:13:44 long sabun = time2 - time1; //<---- 60000 Date hoge = new Date(sabun); long hoge_time = hoge.getTime(); System.out.println(hoge_time); <--- 60000 //setTime: Calendar の現在の時刻を、指定された Date に。 cal.setTime(hoge); //★この時点でprint_cal。 print_cal(cal); <---- 1970/1/1(木) 9:1:0 ?9時間も経ってる? long now2 = cal.getTime().getTime(); System.out.println("now2: " + now2); <--- 60000。でも60秒がはいってるぽい --コード以上--
- ベストアンサー
- Java
- カレンダークラス
入力値の日付から1年後の日付をもとめたいのですが、よく分かりません。 入力値は XXXX年 XX月 XX日 のような感じです。 Calendar cal1 = Calendar.getInstance(); cal1.set(int,int,int);で上記で入力された値をint型にして設定し、 その後に、cal1.add(Calender.YEAR,1); としています。 なのですが、なぜだか1ヶ月進んだ値が返却されます、、 2009/01/01なら2010/02/01が返却される。 また現在日付を取得して表示しても1ヶ月進んで表示されるのですが、、 どなたか詳しい方教えて下さい。宜しくお願いします。
- ベストアンサー
- CGI
- Calendarクラスの日付更新について
ある日付を追加した時,うまく正式な日付になりません。 (1) 2002年9月30日にセットする (2) 1日追加する --→この時点で2002年9月31日になっている。 (3) 10月1日に正式な日付に直す という流れなのですが・・・ ソースは以下のとおりです。 public static void main(String[] args) { Calendar cal = new GregorianCalendar(); /*(1)*/ cal.set(2002,9,30); /*(2)*/ cal.add(Calendar.DATE,1); /*(3)*/ cal.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DATE) ); System.out.println(cal.get(Calendar.YEAR) "年"+ cal.getCalendar.MONTH) +"月"+ cal.get(Calendar.DATE) +"日"); } と、表示させると2002年10月1日になっておらず2002年9月31日になったままです。 これはどこに原因があるのでしょうか?ご指導お願いします。
- ベストアンサー
- Java
- java コマンドライン引数を利用したカレンダー
args[0]に例えば200805と入れたら2008年5月のカレンダーが表示される、そんなプログラムを書きたいと思っています。 理想は↓の形です。(_は空欄の意です;) 2008年5月 日 月 火 水 木 金 土 ___________1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 importは使わないよう指示が出ていますので、フルネームでカレンダークラスを記載しています。 public class CalShow { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ java.util.Calendar cal = java.util.Calendar.getInstance(); //コマンドライン引数の前4桁をyear、 int year = Integer.parseInt(args[0].substring(0, 4)); //後ろ2桁をmonthとしてそれぞれintで定義 int month = Integer.parseInt(args[0].substring(4)); System.out.println( year + "年" + month + "月"); System.out.println(" 日 月 火 水 木 金 土"); cal.set(year, month - 1, 1); int startDay = cal.get(java.util.Calendar.DAY_OF_WEEK); cal.add(java.util.Calendar.MONTH, 1); cal.add(java.util.Calendar.DATE, -1); int lastDay = cal.get(java.util.Calendar.DATE); /*なんとなくここまで書けたのですが、ここからどのように木曜日と1日を繋げていけばよいのか分からなくて困っています。 どういったメソッドを使えばいいのかなど、どなたか教えていただけませんでしょうか? よろしくお願いいたします。*/ } }
- ベストアンサー
- Java
- 配列を使ってカレンダーを表示したい。
配列を使った場合のカレンダー表示方法で質問します。 現在、 Calendarクラスを使い、配列に日を入れていくようにしているのですが Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at CalendarSample.main(CalendarSample.java:33) のようなエラーが生じます。 以下のような手順でで考えることは可能なのでしょうか? よろしくお願いします。 Calendar cal = Calendar.getInstance(); //最終日 int max = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //月の週の合計数 int week = cal.get(Calendar.WEEK_OF_MONTH); //日を格納する配列 int[][] date = new int[week][7]; int n = 0; for(int d=1;d<=max;d++){ //年月日の設定 cal.set(2011,6,d); int youbi = cal.get(Calendar.DAY_OF_WEEK); date[n][youbi] =d; //日が、土曜になったら、配列の列を変える if(cal.get(Calendar.DAY_OF_WEEK)==6){ n+=1; } }
- 締切済み
- Java
- 日付の比較(Beforeメソッド)
WIN XP j2sdk1.4.2_04 です。 宜しくお願いします。 int chkYear = 2004 int chkMonth = 07 int chkDay = 26 Calendar cal1 = new GregorianCalendar(); Calendar cal2 = new GregorianCalendar(chkYear,chkMonth-1,chkDay); cal1.get(cal1.YEAR); cal1.get(cal1.MONTH); cal1.get(cal1.DATE); if(cal2.before(cal1) == true){ 処理 } cal1 で現在の日時を取得し Beforeメソッドで cal2 の値が現在日時より過去だったらエラーを返す ような処理にしてます。 Cal2に当日の日付を入力すると 過去の日付となってしまいます。 前日と翌日はきちんと動作しますが、 当日だけがうまく行きません。 なにか良い方法はありますでしょうか?
- ベストアンサー
- Java
- Calendarクラスでエラーがでる
こんにちは。 以下の単純なコードでエラーが出ます。 import java.util.Calendar; public class CalTest { public static void main(String args[]) { Calendar cal = cal.getInstance(); int year = 2002, month = 9, day = 19; cal.set(year,month,day); } } エラーは CalTest.java:6: 変数 cal は初期化されていない可能性があります。 Calendar cal = cal.getInstance(); です。使っているのはj2sdk1.4.0_01ですが、方法が変わったんでしょうか? 誰か分かる人がいたら教えてください。よろしくお願いします。
- ベストアンサー
- Java
お礼
ありがとうございました!! 勉強になりました。 早速使わせていただきます!