• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:小数点になってしまいます。)

JavaScriptで年末までの残り日数を表示する方法

このQ&Aのポイント
  • JavaScriptを使用して年末までの残り日数を表示する方法を紹介します。
  • 質問文章には、JavaScriptを使用して年末までの残り日数を表示する方法が記載されています。ただし、一部のコードが小数点になってしまっているため、正しい結果が表示されません。正しいコードを使用することで、問題なく残り日数を表示することができます。
  • 年末までの残り日数をブラウザ上に表示する方法を紹介します。JavaScriptを使用し、年末の日付を設定し、現在の日付との差を計算することで、残り日数を求めることができます。ただし、注意点として、正確な差を計算するためには、日付の演算に関する詳細な知識が必要です。適切なコードを使用することで、正しい残り日数が表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

確かに asuncion さんの おっしゃるとおり、下記の計算の意図が不明です。 > (1000*1900/02/28*1900/02/28*24) 文字どおり日にちの差なら、下記のようになります。 合ってるか どうかチェック、結果は「14」になるハズです。 <html> <head> <meta http-equiv="Content-Type" content="Text/HTML; charset=Shift_JIS"> <title>test</title> </head> <body bgcolor="#8f9fff" text="#000000" link="#2f2fff" vlink="#d700d7" alink="#00ffff" > <script type="text/javascript"> <!-- // 「var」、「new」、「Date」などの間にスペースが必要です。 var Year0, Month0, Date0; var Year1, Month1, Date1; Year0 = 2016; Month0 = 6; Date0 = 1; Year1 = 2016; Month1 = 6; Date1 = 15; // 「Date」オブジェクトでは、数値で"月"を設定する場合、「0~11」(ゼロ・スタート)になるので"月"から"1"を引いて、"月"をゼロ・スタートにしています。 var Date0_Obj = new Date(Year0,Month0-1,Date0); var Date1_Obj = new Date(Year1,Month1-1,Date1); // ↑合ってるか どうかチェックしたい場合は本当に簡単に計算できる値にした方が良いでしょう。 var TimeDenominator = 1000*60*60*24; // 数字に対応する意味:1000(ミリ秒→秒)、60(秒→分)、60(分→時間)、24(時間→日にち) // ↑ここで割り算を使わないのは計算誤差を最小にするためです。 var StartElapse = Math.floor(Date0_Obj.getTime( )/TimeDenominator); var EndElapse = Math.floor(Date1_Obj.getTime( )/TimeDenominator); // ↑個々に「Math.floor( )」で少数以下を切り捨てる、「Math.floor( )」でマイナスの数値を扱う場合には注意が必要になります。 var Elapse = EndElapse-StartElapse; document.writeln(Elapse+'日の差<br>'); // 上記の設定値なら、結果は「14」になるハズです。 --> </script> </body> </html> 今年の年末までの計算。 <html> <head> <meta http-equiv="Content-Type" content="Text/HTML; charset=Shift_JIS"> <title>test</title> </head> <body bgcolor="#8f9fff" text="#000000" link="#2f2fff" vlink="#d700d7" alink="#00ffff" > <script type="text/javascript"> <!-- // 「var」、「new」、「Date」などの間にスペースが必要です。 var Year1, Month1, Date1; Year1 = 2016; Month1 = 12; Date1 = 31; // 今年の年末 // 「Date」オブジェクトでは、数値で"月"を設定する場合、「0~11」(ゼロ・スタート)になるので"月"から"1"を引いて、"月"をゼロ・スタートにしています。 var Date0_Obj = new Date( ); var Date1_Obj = new Date(Year1,Month1-1,Date1); var TimeDenominator = 1000*60*60*24; // 数字に対応する意味:1000(ミリ秒→秒)、60(秒→分)、60(分→時間)、24(時間→日にち) // ↑ここで割り算を使わないのは計算誤差を最小にするためです。 var StartElapse = Math.floor(Date0_Obj.getTime( )/TimeDenominator); var EndElapse = Math.floor(Date1_Obj.getTime( )/TimeDenominator); // ↑個々に「Math.floor( )」で少数以下を切り捨てる、「Math.floor( )」でマイナスの数値を扱う場合には注意が必要になります。 var Elapse = EndElapse-StartElapse; document.writeln(Elapse+'日の差<br>'); --> </script> </body> </html>

WIWJPCUHIABJ
質問者

お礼

ご回答ありがとうございます。

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.2

問題無く動作するという方のプログラムでも、スペースの抜けを修正して動作させると小数点の入った答えが復ってきますよ。 私の所での実行結果は ========== 572.2982825484765日の差 ========== です。

WIWJPCUHIABJ
質問者

お礼

ご回答ありがとうございます。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>これなら、問題なく日付けが表示される 本当ですか? <scriptlanguage="javascript"> script と language の間に空白がない <!-- vardat1=newDate(); vardat2=newDate(2016,11,31); vardiff=(dat2.getTime()-dat1.getTime())/(1000*1900/02/28*1900/02/28*24); document.writeln(diff+'日の差'); //--> コメントになっている。 コメントを外したとしてもvar の後ろに空白がなく、変数名としてみなされない。 といったような問題があり、「問題なく日付(日数のことですか?)が 表示される」とはいいがたいような気がします。 日数を正しく表示してくれているスクリプトを見せていただけますか? ところで、計算式の部分 >(1000*1900/02/28*1900/02/28*24) ここの意図は何ですか?

WIWJPCUHIABJ
質問者

お礼

ご回答ありがとうございます。

関連するQ&A