web-dev-qa-db-ja.com

JavaScriptでHH:MM:SSの形式で現在の時刻を表示する方法は?

この形式HH:MM:SSで時間を設定する方法を教えてください。これをdivに設定したいですか?

71
user2648752
function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  // add a zero in front of numbers<10
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
  t = setTimeout(function() {
    startTime()
  }, 500);
}
startTime();
<div id="time"></div>

DEMO javaScriptのみを使用

更新

Updated Demo

(function () {
    function checkTime(i) {
        return (i < 10) ? "0" + i : i;
    }

    function startTime() {
        var today = new Date(),
            h = checkTime(today.getHours()),
            m = checkTime(today.getMinutes()),
            s = checkTime(today.getSeconds());
        document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
        t = setTimeout(function () {
            startTime()
        }, 500);
    }
    startTime();
})();

ネイティブ関数Date.toLocaleTimeString()を使用できます。

var d = new Date();
var n = d.toLocaleTimeString();

以下が表示されます:

"11:33:01"

私はそれを見つけました http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp

var d = new Date();
var n = d.toLocaleTimeString();
alert("The time is: \n"+n);
72
pstryk

これはJavascriptで実行できます。

var time = new Date();
console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds());

現在、15:5:18を返します。値のいずれかが10未満の場合、2桁ではなく1桁のみを使用して表示されることに注意してください。

これを JSFiddle で確認してください

更新:
プレフィックス0の試行

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));
48
Praveen

moment.js を使用してこれを行うことができます。

var now = new moment();
console.log(now.format("HH:mm:ss"));

出力:

16:30:03
34
brandonscript
new Date().toTimeString().slice(0,8)

ToLocaleTimeString()は9:00:00 AMのようなものを返す可能性があることに注意してください。

19
Thorsten

このコードは、コンソールで現在の時刻をHH:MM:SS形式で出力し、GMTタイムゾーンを考慮します。

var currentTime = Date.now()
var GMT = -(new Date()).getTimezoneOffset()/60;
var totalSeconds = Math.floor(currentTime/1000);
seconds = ('0' + totalSeconds % 60).slice(-2);
var totalMinutes = Math.floor(totalSeconds/60);
minutes = ('0' + totalMinutes % 60).slice(-2);
var totalHours = Math.floor(totalMinutes/60);
hours = ('0' + (totalHours+GMT) % 24).slice(-2);
var timeDisplay = hours + ":" + minutes + ":" + seconds;
console.log(timeDisplay);
//Output is: 11:16:55
1
vanjavk
function realtime() {
  
  let time = moment().format('h:mm:ss a');
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('h:mm:ss a');
    document.getElementById('time').innerHTML = time;
  }, 1000)
}

realtime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>

moment.js および setInterval を使用する非常に簡単な方法。

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)

サンプル出力

setInterval()を1000msまたは1秒に設定して使用すると、出力は1秒ごとに更新されます。

午後3時25分50秒

これは、私のサイドプロジェクトの1つでこの方法を使用する方法です。

setInterval(() => {
  this.time = this.shared.time;
}, 1000)

setInterval()を使用するとパフォーマンスの問題が発生するかどうか疑問に思われるかもしれません。

setInterval CPUは集中的ですか?

setIntervalが本質的に重大なパフォーマンスの問題を引き起こすとは思わない。 CPUがそれほど強力ではなかった初期の時代から評判が来るのではないかと思います。 ...-寂しい日

いいえ、setIntervalはそれ自体ではCPUを集中的に使用しません。非常に短いサイクルで実行されている多くの間隔(または中程度に長い間隔で実行されている非常に複雑な操作)がある場合、間隔の実行内容と実行頻度に応じて、CPUを集中的に使用しやすくなります。 ...-aroth

しかし、一般に、あなたのサイトで本当に多くのようにsetIntervalを使用すると、物事が遅くなるかもしれません。多かれ少なかれ重い仕事で20の同時実行間隔がショーに影響します。そして再び..あなたは本当にsetIntervalの問題ではないと思う部分を台無しにすることができます。 ...-jAndy

1
Vadamadafaka

これは、javascriptを使用してdiv(only_time)に時間を設定する方法の例です。

function date_time() {
    var date = new Date();
    var am_pm = "AM";
    var hour = date.getHours();
    if(hour>=12){
        am_pm = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    if(hour>12){
        hour = hour - 12;
    }
    if(hour<10){
        hour = "0"+hour;
    }

    var minute = date.getMinutes();
    if (minute<10){
        minute = "0"+minute;
    }
    var sec = date.getSeconds();
    if(sec<10){
        sec = "0"+sec;
    }

    document.getElementById("time").innerHTML =  hour+":"+minute+":"+sec+" "+am_pm;
}
setInterval(date_time,500);
<per>
<div class="date" id="time"></div>
</per>
0
A.S.Abir