JavaScriptで、現在日時から100日後の日時を表示させるには?
JavaScriptで、現在日時から100日後の日時を求め、表示させたいと思っています。
「現在日時を取得する方法」と、「それを表示形式へ変換する方法」は、わかっています。
しかし、「100日後の日時」を表示させる方法が分かりません。
もちろん、年・月・日をまたぐ場合にもちゃんと対応できることが前提です。
極力、単純な方法が理想です。
以下、コードです。ご教授よろしくお願いします。
function func()
{
var day = new Date();
var datestr = day.toLocaleString();
alert(datestr);
}
No.2ベストアンサー
- 回答日時:
まったく同じ方法ですが…
>極力、単純な方法が理想です。
とのことなので、日にちを足すのが簡単では?
var day = new Date();
day.setDate(day.getDate() + 100);
alert(day.toLocaleString());
ありがとうございました。
ご教授いただいた方法で実現できました。
手元の本に「getDate、setDateの範囲は1~31」と明記してあったため、それを真に受けてそれ以外の範囲の数値は設定できないものだと勝手に思い込んでおりました。
実施してみたところ、うまくいきました。本当に失礼しました。
No.7
- 回答日時:
>表示させる方法が分かりません。
どこに表示したいのだろう? alertではないって事だよね??
幾つかみつくろって。
<head>
<style type="text/css">
p{border:solid thin red;}
</style>
<script type="text/javascript">
function sample() {
var str = new Date().toLocaleString();//100日後に関しては他の方の回答で。
//特定ノードにテキストノードを作って追加する
document.getElementById('ABC').appendChild(
document.createTextNode(str)
);
//特定ノード配下の最初のテキストノードを書き換える
document.getElementById('DEF').firstChild.nodeValue =str;
//input textの値を書き換える
document.getElementById('GHI').value =str;
}
</script>
</head>
<body>
<p id="ABC"></p>
<p id="DEF">aaa</p>
<p><input type="text" id="GHI" value="bbb" /></p>
<p><input type="button" value="実行" onclick="sample()"></p>
</body>
No.5
- 回答日時:
var day=new Date();
//100日 x 24時間 x 60分 x 60秒 x 1000ミリ秒
day.setTime(d.getTime() + (100 * 24 * 60 * 60 * 1000));
No.4
- 回答日時:
getYear() メソッドが 2000 年問題を持っていたことにより、getFullYear() メソッドが導入されたのは JavaScript 1.3(NN 4.06)、JScript 3.0(IE 4.0)、そして ECMAScript(2000 年の第 3 版で getYear() を削除し歴史的補遺としてのみ残した)です。
現時点で getFullYear() に対応していないスクリプトエンジンはないので、これからの制作者は getYear() を使わないで下さい。※有名なサイトが未だにこれを記述しているため、真似をしてしまう人が後を絶たないのですが、少なくとも、2000 年以降に書かれた JavaScript 関連文書で、escape、unescape、Date.prototype.getYear、Date.prototype.setYear、Date.prototype.toGMTString、String.prototype.substr あたりを無批判に用いているものは、不用意と言わざるをえません。もう 2010 年も半ばですよ。
また、月末日を得るには翌月の 0 日をセットするだけです。new Date(2010, 2, 0).getDate() は 2010 年 2 月の最終日、28 を返します。閏年の心配も要りません。この挙動は ECMAScript 規定(15.9 節)で保証されています。
同じ理由で、今(var now = new Date;)から 100 日後を得るには、
now.setDate(now.getDate() + 100);
今から 100 日前を得るには
now.setDate(now.getDate() - 100);
今から 300 時間後を得るには
now.setHours(now.getHours() + 300);
簡単でしょ?
※厳密には、Date の内部は 1970-01-01T00:00:00.000 からのミリ秒(時間値)で管理されています。set*** メソッドに与えられた引数は適切にミリ秒に変換されて、時間値と合わされます。get*** が呼ばれたとき、時間値は適切な値に変換されます。
参考URL:http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma26 …
ありがとうございました。
本質問は、そもそも、本に乗っていたgetDate、setDateの説明を私が勘違いして受け取ったために、できないものと勝手に解釈して質問を立てたものでした。
Chaireさんのご回答が、勘違いに気付くきっかけとなりました。本当にありがとうございました。
getYearが推奨されてないことは知りませんでした。確かに手元の本にもそう書いてありますね…
お教えいただきありがとうございました。
No.3
- 回答日時:
いちおう頑張って作ってみたんですが、いかがでしょうか。
何日後でも年をまたいでもOKだと思うのですが。
長かったり不手際があったらごめんなさい。
<html lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>title</title>
<script type="text/javascript">
<!--
function func(){
//現在年月日時刻
var date = new Date();
var yy = date.getYear(); if ( yy < 2000 ){ yy += 1900; }
var mm = date.getMonth() + 1;
var dd = date.getDate();
var h = date.getHours(); if( h < 10 ){ h = '0' + h; }
var m = date.getMinutes(); if( m < 10 ){ m = '0' + m; }
var s = date.getSeconds(); if( s < 10 ){ s = '0' + s; }
var cnt = 0,x = 100;
//今月
for( var i = dd; i <= getDaysInMonth( yy, mm ); i++ ){
if( cnt == x ){
showMsg( x, yy, mm, dd, h, m, s );
break;
}else{
dd++;cnt++;
}
}
//次月以降
mm++;
dd = 1;
while( cnt < x ){
dd++; cnt++;
if( dd > getDaysInMonth( yy, mm ) ){ mm++; dd = 1; }
if( mm > 12 ){ yy++; mm = 1; }
}
showMsg( x, yy, mm, dd, h, m, s );
}
//月の日数を返す関数
function getDaysInMonth(iYear, iMonth) {
var daysInMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if ( ((iYear % 4 == 0) && (iYear % 100 != 0)) || (iYear % 400 == 0) ) {
daysInMonth[1] = 29;
}
return daysInMonth[iMonth - 1];
}
//x日後をalertする関数
function showMsg(x, yy, mm, dd, h, m, s ){
if( mm < 10) mm = '0' + mm;
if( dd < 10) dd = '0' + dd;
alert( x + '日後は' + yy + '/' + mm + '/' + dd + '/' + h + ':' + m + ':' + s );
}
window.onload = function(){
func();
}
//-->
</script>
</head>
<body>
</body>
</html>
この回答への補足
あ…ありがとうございます。
一応、うまく動作することが確認できました。
さぞかし大変だったのでは…?
ただ、極力簡単な方法を求めていたので、これではちょっとあまりにもソースコードが長すぎかと…。
逆に、こんなに大変なコードを書かないと実現できないことなんでしょうか?
JavaScriptについては最近勉強し始めたばかりですが、こんな基本的なことが2~3行のコードで実現できないとは………こんなにも不便な言語なのですか…?
クッキーの有効期限を設定したりとか、利用価値が多そうなのに…。
そういう場合、みなさんどうやっているのでしょう?
すみません、せっかくの労作に愚痴をこぼしてしまって…
No.1
- 回答日時:
100日後は
100×24×3600×1000=8640000000ミリ秒
です。(オーバーフローしないかなあ...)
day.getMilliseconds() に8640000000を加算した値をsetすればいいんじゃない。
var day = new Date();
var datestr = day.toLocaleString();
var post_day= new Date();
post_day.setMilliseconds(day.getMilliseconds());
var post_datestr = post_day.toLocaleString();
alert(datestr);
alert(post_datestr);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Excel(エクセル) 下記エクセルの式がなぜこうなるのか理由が知りたいです。 6 2022/08/20 00:43
- Excel(エクセル) 【エクセル】参照セルに何も入力が無い場合の空白表示方法 1 2022/05/26 10:01
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Visual Basic(VBA) このような形で現在時刻と現在日付をずっと表示させる方法を教えていただけますか?詳しくお願いします。 3 2023/02/22 11:40
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- その他(開発・運用・管理) おんどとりWebStorage APIから温度情報を取得し表示したい 2 2023/08/03 09:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptのコードの修正をお...
-
C#OpenCv V4にのエラーに関する...
-
翌月を取得するGASが分かりません
-
google apps scriptの終了のさせ方
-
シンプルなweb版スタンプラリー...
-
jqGridについて
-
なぜmatchメソッドがエラーにな...
-
VSCODE[Python]の設定について
-
ローカルにあるファイルを検索...
-
JavaScriptで、現在日時から100...
-
ページを読み込む前にリダイレ...
-
GASでundefinedエラーが出ます
-
商品コードを入力で、商品名、...
-
chromeでxmlをJSで表示するには?
-
テーブル内のテキストを取得したい
-
カラー表記の足し算プログラム
-
1日1回だけ引けるjavascriptお...
-
javascriptでテーブルに追加し...
-
並び替えの問題を作りたい
-
vb.netでの記述方法について 以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報