こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

締切り済みの質問

日付のJavaについて質問

日付のJavaについて質問です。
<script>
function makedate(){
now = new Date();
Day = 12 * 60 * 60 * 1000;
now.setTime( now.getTime() + Day );

document.write("<select name=year>");
for(i = 2016; i <= 2017; i++){
Set_year = now.getYear();
Set_year = (Set_year < 2000) ? Set_year+1900 : Set_year ;

if(i == Set_year){
document.write("<option value="+i+" selected>"+i);
}else{
document.write("<option value="+i+">"+i);
}
}
document.write("</select> 年");
</script>


上のような日付のプログラムを制作してみたいと思っています。
for以下のところですが、2016年⇒17年⇒18年...と年を越しても自動的に値を取得するにはどうすれば良いのでしょうか。
教えて頂ければと思います。

投稿日時 - 2016-01-04 17:54:28

QNo.9106004

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

Java ではなく JavaScript ですね。
日付関数は使ったことはないいですけど、ご参考になれば。

> Day = 12 * 60 * 60 * 1000;
> now.setTime( now.getTime() + Day );

↑12時間進めているようですが?どんな意図でしょうか?

> Set_year = now.getYear();
> Set_year = (Set_year < 2000) ? Set_year+1900 : Set_year ;

↑getYear は非推奨で代わりに getFullYear を使用する事が推奨されているようです。

> for(i = 2016; i <= 2017; i++){
> Set_year = now.getYear();
> Set_year = (Set_year < 2000) ? Set_year+1900 : Set_year ;
> if(i == Set_year){

Set_year = now.getFullYear();
for(i = Set_year; i<(Set_year+5); i++){ // i の比較を「i<=」から「i<」に変更。
// ↑5年分のループ、例えば Set_year の値が 2001 なら 2005 までループする。
// 「(Set_year+5)」の"5"の値が その期間に対応します、この"5"の部分を変数にしても良いです。
if(i == Set_year){

投稿日時 - 2016-01-04 19:26:38

-広告-

ANo.1

getYear() などは Deprecated らしいので Calendar を使った方がよいかと思われます。

投稿日時 - 2016-01-04 19:01:33

-広告-
-広告-
-広告-
-広告-