JavaScript で現在時刻を取得するコードと実行結果

ピンギー
質問: JSでアクセス日時を表示したい
JavaScriptでアクセス日時をページに表示したいんだ。どうコードを書けばよいんだっけ?

概要

JavaScriptで現在の時刻を取得、表示する場合は、new Date()にてDateオブジェクトを作成し、 getHours() getMinutes() メソッドなどを呼び出すことで時刻や日付の要素を取得できます。

また、今日の日付を表示する場合は、new Date()にてDateオブジェクトを作成し、 getFullYear() getMonth() getDate()メソッドなどを呼び出すことで日付の要素を取得できます。

書式

Dateオブジェクトの作成

Dateオブジェクトのインスタンスを作成すると、現在の時刻を示すDateオブジェクトが作成されます。

var (変数名) = new Date();

各日時要素の取得

Dateオブジェクトが示す時刻や日付の要素を取得するには下記のメソッドを利用します。

項目メソッド名
getFullYear()
getMonth()
getDate()
getHours()
getMinutes()
getSeconds()
ミリ秒getMilliseconds()
曜日getDay()
注意:月の表現
getDay()で取得できる月の数値の意味は下記になります。getMonth()で取得できる月の値はその数値が示す月ではありませんので注意してください。
getMonth()の取得値
getMonth()の値意味
0January1月
1February2月
2March3月
3April4月
4May5月
5June6月
6July7月
7August8月
8September9月
9October10月
10Nobember11月
11December12月

曜日の表現

getDay()で取得できる曜日の数値の意味は下記になります。

getDay()の取得値
getDay()の値意味曜日
0Sunday日曜日
1Monday月曜日
2Tuesday火曜日
3Wednesday水曜日
4Thursday木曜日
5Friday金曜日
6Saturday土曜日

プログラム例1:現在の時刻の取得

コード

以下のHTMLファイルを作成します。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
  <script type="text/javascript">
    function LoadProc() {
      var now = new Date();
      var YearValue = now.getFullYear();
      var MonthValue = now.getMonth()+1;
      var DateValue = now.getDate();
      var HourValue = now.getHours();
      var MinValue = now.getMinutes();
      var SecValue = now.getSeconds();

      var target = document.getElementById("DateTimeDisp");
      target.innerHTML = YearValue + "年" + MonthValue + "月" + DateValue + "日" + HourValue + ":" + MinValue + ":" + SecValue;
    }

  </script>
</head>
<body onload="LoadProc();">
現在の時刻:
   <div id="DateTimeDisp"></div>
</body>
</html>

解説

Dateオブジェクトを新規に作成し、"DateTimeDisp"のIDを持つDIVタグの要素を取得し現在の時刻を表示します。
getMonth()は1月が0、12月が11となるため、1を加算することに注意してください。

function LoadProc() {
  var now = new Date();
  var YearValue = now.getFullYear();
  var MonthValue = now.getMonth()+1;
  var DateValue = now.getDate();
  var HourValue = now.getHours();
  var MinValue = now.getMinutes();
  var SecValue = now.getSeconds();

  var target = document.getElementById("DateTimeDisp");
  target.innerHTML = YearValue + "年" + MonthValue + "月" + DateValue + "日" + HourValue + ":" + MinValue + ":" + SecValue;
}
補足
Bodyタグ内の onload="LoadProc();" を忘れずに。

実行結果

HTMLファイルを表示します。下図の画面が表示されます。現在の時刻が表示されます。

JavaScript で現在時刻を取得するコードと実行結果:画像1


ページをリロードすると時刻表示も更新されます。
JavaScript で現在時刻を取得するコードと実行結果:画像2

プログラム例2:今日の日付(現在の日付)の取得

今日の日付を取得する場合のコードです。

コード

以下のHTMLファイルを作成します。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <script type="text/javascript">
    function LoadProc() {
      var now = new Date();

      var YearValue = now.getFullYear();
      var MonthValue = now.getMonth()+1;
      var DateValue = now.getDate();

      var target = document.getElementById("DateTimeDisp");
      target.innerHTML = YearValue + "年" + MonthValue + "月" + DateValue + "日";
    }
  </script>

</head>
<body onload="LoadProc();">
  <h2>今日の日付を取得するデモ</h2>
  <div>
    今日の日付:<span id="DateTimeDisp"></span>
  </div>
</body>
</html>

解説

ページロード時に以下の LoadProc() 関数を呼び出し実行します。 Dateオブジェクトを作成しgetFullYear() getMonth() getDate() メソッドを呼び出し、今日の日付の要素の値を取得し、 画面に表示します。

    function LoadProc() {
      var now = new Date();

      var YearValue = now.getFullYear();
      var MonthValue = now.getMonth()+1;
      var DateValue = now.getDate();

      var target = document.getElementById("DateTimeDisp");
      target.innerHTML = YearValue + "年" + MonthValue + "月" + DateValue + "日";
    }

実行結果

HTMLファイルをWebブラウザで表示します。下図のページが表示されます。
実行時の日付がページに表示されることが確認できます。

JavaScript で現在時刻を取得するコードと実行結果:画像3

変換に関する注意事項
下記コードは月数を取得し1を加算するコードです。
  var MonthValue = now.getMonth()+1;

明示的に数値として指定する場合は、下記のコードで数値であることを明示的に指定できます。
  var MonthValue = Number(now.getMonth())+1;

一方で、文字列を整形する下記のコードで1を加算する処理を記述すると、文字として認識されて期待した結果と異なる出力になる場合があります。
 target.innerHTML = YearValue + "年" + MonthValue+1 + "月" + DateValue + "日" + HourValue + ":" + MinValue + ":" + SecValue;

上記の出力結果
2017年111月16日15:30:24
Monthの値 "11" が数値ではなく文字列と認識されるため、 Month+1 が "111" の結果になってしまいます。


A.W.S (Another World Story)

JavaScript で現在時刻を取得するコードと実行結果:画像4

テラス席に差し込む初夏の光が、真っ白なテーブルクロスに水面のような反射をつくっていた。 噴水の涼やかな音が遠くに混じり、ミントの葉と温かなフォカッチャの匂いが風に乗る。 ウェブコーダーの弘美は、細い指でノート PC の蓋を開けると、隣に座る女子プログラマーの都へいたずらっぽく笑いかけた。
「ねえ都、ランチセットって十三時ちょうどで終わりらしいよ。時計見るより JavaScript に聞いたほうが確実じゃない?」
都は軽く頷き、カフェラテ色の瞳をテーブル脇の時計台に向けた。長針は十二時五十八分を回ったばかり。
「間に合うか微妙ね。じゃあ――」
カチャ、とキーボードが鳴る。

const now = new Date();
const timeStr = now.toLocaleTimeString('ja-JP', {
  hour:   '2-digit',
  minute: '2-digit',
  second: '2-digit',
  hour12: false,
  timeZone: 'Asia/Tokyo'
});
console.log(timeStr);


弘美がブラウザの DevTools を開き、エンターキーを押す。コンソールに浮かび上がった時刻は、12:58:47。
「あと七十三秒!」弘美が声を上げた。
都は慌てて手を挙げ、近くのウェイターを呼ぶ。
「ランチセット二つ、急ぎでお願いします!」
だが昼休み終盤の店内は混雑していた。注文端末を操作するウェイターが戻ってきたのは、秒針が十三時を過ぎた頃だった。
「申し訳ございません。ランチセットは十三時〇〇分〇〇秒をもって終了いたしました」
淡々とした声とは裏腹に、端末の画面に映るのはレストラン専用の注文アプリ。その片隅で JavaScript のログが小さく瞬いている。
「秒単位で締め切るなんて、なかなかシビアだね」弘美が肩をすくめる。
「非同期処理がレイテンシに負けた感じ」都も苦笑いした。
結局、二人は通常メニューのカルボナーラとアラビアータを頼むことにした。皿が運ばれてくるまでのあいだ、 風がテラスのパラソルを揺らし、ミントのグリーンが光を透かす。 ふと弘美が、ウェイターの端末から目を離さずにつぶやく。
「秒単位で値段も変動したら面白いのにね。ランチあと一秒、ディスカウント一円とか」
「秒殺割引?」都は吹き出し、すぐにスマホを取り出した。
「じゃあコードに書き足してみる?」

const limit = new Date();
limit.setHours(13, 0, 0, 0);          // 13:00:00.000
const diff  = limit - new Date();      // 残りミリ秒
const price = diff > 0 ? 1200 : 1800;  // 秒殺割引(仮)


「理論上はこれで値段が動くはずだけど、現実は動かないわね」
皿がテーブルに置かれ、バジルとチーズの香りがふわりと立つ。 ウェイターは申し訳なさそうに会釈したあと、端末を確認して戻っていく。その背中を見送りながら、都はふっと目を丸くした。
「ねえ弘美、あの端末のロゴ……私たちが作った決済 UI のライブラリじゃない?」
「あ、本当だ」弘美も身を乗り出す。
二人がかつて徹夜続きで仕上げた OSS の小さなライブラリ。秒単位の締め切りロジックは、まさにそれに含まれていた。
「自分で書いたコードにランチを締め切られるとは思わなかったな」
「開発者の特権か、業(カルマ)か――」
カルボナーラを巻き取りながら、都は茶目っ気のある笑みを浮かべた。
「ま、いいじゃない。コードで時間を測れば測るほど、ランチタイムは短くなる。――これ、今日の教訓ね」
弘美はフォークを置き、深く頷く。
「秒殺されたっていいさ。プログラムと胃袋にバグはないって証明できたんだから」
頭上のパラソルがサラサラと鳴り、時計台のベルが十三時一分を告げた。風は相変わらずミントの香りを運び、二人の笑い声に混ざって小さく弾んだ。


このページのキーワード
  • JS で現在時刻を取得するコードと実行結果
AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2013-06-10
改訂日: 2023-12-22
Copyright © 1995–2025 iPentec all rights reserverd.