C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: Javaで指定日から数日後の日付を出したい。


(過去ログ 63 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■36367 / inTopicNo.1)  Javaで指定日から数日後の日付を出したい。
  
□投稿者/ トッチー (7回)-(2009/05/27(Wed) 23:34:29)

分類:[Java] 

2009/05/27(Wed) 23:34:55 編集(投稿者)
2009/05/27(Wed) 23:34:49 編集(投稿者)

<pre><pre>java version "1.6.0_13"
WinXP Pro
Eclipse Platform Version: 3.4.2

指定した日付から何日後の日付結果をDate型(とString型)で出力したいです。

* test.java

import java.util.Calendar;

public class test {
public static void main(String[] args) {
diffDay diff = new diffDay();
Calendar cal = Calendar.getInstance(); //(A)これは本日
// 仮に4日後
System.out.println(diff.getCalculateDay(cal , 4) ); //(B)できればDate型
}
}

* diffDay.java

import java.util.Calendar;
import java.util.Date;

public class diffDay {
public Calendar getCalculateDay(Calendar cal, int addDate){
// 基準日指定が無い場合は当日
if (cal == null) {
cal = Calendar.getInstance();
}
cal.add(Calendar.DATE, addDate);
return cal;
}
}

当日ではなく、指定した日時からさらにN日後を出力させたいのですが・・・。

(A)と(B)を修正すれば良いと思うのですが、アドバイスをいただければと思います。

</pre></pre>
引用返信 編集キー/
■36372 / inTopicNo.2)  Re[1]: Javaで指定日から数日後の日付を出したい。
□投稿者/ かずき (35回)-(2009/05/28(Thu) 07:26:34)
こんな感じかな?
String targetDateText = "2000/04/01"; // 指定した日
int addDate = 4; // 足す日付

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date targetDate = sdf.parse(targetDateText);
Calendar cal = Calendar.getInstance();
cal.setTime(targetDate);
cal.add(Calendar.DATE, addDate);
System.out.println(sdf.format(cal.getTime()); // 2000/04/05が表示されるはず

因みに提示されているコードのように引数に値を代入するほうほうは
バグのもとになりやすいコードなので書く癖があるならやめたほうがいいです。
(バグというよりは、よくJavaを知らない人が書いてはまることがある
 という表現のほうが近いかも)

■No36367 (トッチー さん) に返信
> 2009/05/27(Wed) 23:34:55 編集(投稿者)
> 2009/05/27(Wed) 23:34:49 編集(投稿者)
> 
> <pre><pre>java version "1.6.0_13"
> WinXP Pro
> Eclipse Platform Version: 3.4.2
> 
> 指定した日付から何日後の日付結果をDate型(とString型)で出力したいです。
> 
> * test.java
> 
> import java.util.Calendar;
> 
> public class test {
> 	  public static void main(String[] args) {
> 			diffDay diff = new diffDay();
> 			Calendar cal = Calendar.getInstance();  //(A)これは本日
>                            // 仮に4日後
> 			System.out.println(diff.getCalculateDay(cal , 4) ); //(B)できればDate型
> 	  }
> }
> 
> * diffDay.java
> 
> import java.util.Calendar;
> import java.util.Date;
> 
> 	public class diffDay {
> 			public Calendar getCalculateDay(Calendar cal, int addDate){
> 				// 基準日指定が無い場合は当日
> 			    if (cal == null) {
> 			        cal = Calendar.getInstance();
> 			    }
> 			    cal.add(Calendar.DATE, addDate);
> 			    return cal;
> 			}
> 	}
> 
> 当日ではなく、指定した日時からさらにN日後を出力させたいのですが・・・。
> 
> (A)と(B)を修正すれば良いと思うのですが、アドバイスをいただければと思います。
> 
> </pre></pre>

引用返信 編集キー/
■36373 / inTopicNo.3)  Re[2]: Javaで指定日から数日後の日付を出したい。
□投稿者/ トッチー (8回)-(2009/05/28(Thu) 07:37:45)
アドバイスありがとうございます。

しかしながら、仕様上、値を代入して行わなければなりません。


あと、前回書くのを忘れましたが、
System.out.println(diff.getCalculateDay(cal , 4) ); //(B)できればDate型では

java.util.GregorianCalendar[time=1243809223609,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2009,MONTH=5,WEEK_OF_YEAR=23,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=152,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=7,HOUR_OF_DAY=7,MINUTE=33,SECOND=43,MILLISECOND=609,ZONE_OFFSET=32400000,DST_OFFSET=0]

が表示されてしまいました。

>(バグというよりは、よくJavaを知らない人が書いてはまることがある
 という表現のほうが近いかも)

元はVBプログラマーの人間です。
Javaは本格的にやりだしてまだ1ヶ月です(恥)。
引用返信 編集キー/
■36447 / inTopicNo.4)  Re[3]: Javaで指定日から数日後の日付を出したい。
□投稿者/ も (78回)-(2009/05/29(Fri) 05:25:53)
No36373 (トッチー さん) に返信
> アドバイスありがとうございます。
>
> しかしながら、仕様上、値を代入して行わなければなりません。
>
>
> あと、前回書くのを忘れましたが、
> System.out.println(diff.getCalculateDay(cal , 4) ); //(B)できればDate型では
>
> ja<略>ET=0]
>
> が表示されてしまいました。
ある意味あたりまえなので別に問題ないです.
SimpleDateFormatクラスを使ってフォーマットすればおk

> >(バグというよりは、よくJavaを知らない人が書いてはまることがある
>  という表現のほうが近いかも)
>
> 元はVBプログラマーの人間です。
> Javaは本格的にやりだしてまだ1ヶ月です(恥)。
そんなときのfinal子
public final void method(final int arg) {
arg=10; // えらー
return arg;
}
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -