Bagaimana cara menampilkan waktu saat ini di JavaScript dalam format HH: MM: SS?

101

Bisakah Anda memberi tahu saya cara menyetel waktu dalam format ini HH: MM: SS. Saya ingin menyetelnya dalam div?

pengguna2648752
sumber
Ini kode saya .. jsfiddle.net/naveennsit/yd99X
user2648752
1
Tetapi masalahnya adalah bahwa ia memiliki PM dan AP, saya tidak membutuhkannya. Format kedua 24
pengguna2648752
@ user2648752 periksa demo jawaban saya jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar
1
Um ... Mengapa pertanyaan diberi tag tanggal , padahal pengguna menanyakan waktu?
Lloyd Dominic

Jawaban:

110

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 hanya menggunakan javaScript

Memperbarui

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();
})();
Tushar Gupta - curioustushar
sumber
117

Anda dapat menggunakan fungsi asli Date.toLocaleTimeString():

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

Ini akan menampilkan misalnya:

"11:33:01"

Saya menemukannya di http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp

pstryk
sumber
5
saya pikir, ini harus menjadi jawaban yang diterima, karena menjawab pertanyaan dengan tepat, menggunakan fungsi asli dan merupakan kode kerja terpendek untuk mendapatkan apa yang diminta.
vchrizz
11
3:59:45 PM adalah yang diberikannya kepada saya. Itu bukan format yang diminta.
Ivan
toLocaleTimeString bukanlah sebuah fungsi
Pengguna
dalam satu barisnew Date().toLocaleTimeString()
aljgom
61

Anda dapat melakukan ini di Javascript.

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

Saat ini ia kembali 15:5:18. Perhatikan bahwa jika salah satu nilainya kurang dari 10, mereka akan ditampilkan hanya menggunakan satu digit, bukan dua.

Periksa ini di JSFiddle

Pembaruan:
Untuk percobaan dengan awalan 0

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));
Praveen
sumber
Tolong jawab pertanyaan ini. stackoverflow.com/questions/18227667/…
pengguna2648752
Tolong jawab pertanyaan ini. Saya perlu menunjukkan waktu di kolom pertama.
pengguna2648752
ya Tapi saya perlu menambahkan tiga kolom seperti yang tertulis di pertanyaan.Silakan baca pertanyaan Pak Saya perlu menambahkan waktu pada kolom pertama dan data waktu nyata di kolom kedua
user2648752
Anda perlu menghitung menit dan detik <10, seperti yang dilakukan Tushar dalam jawabannya, atau tidak akan menunjukkan awalan "0".
keepitreal
@CleverGirl Saya mencoba memberikan jawaban sederhana jadi saya menulis itu. Karena Anda menyebutkan tentang awalan 0, saya ingin melakukan ini dengan jawaban @ user113716 yang telah digambarkan dengan sangat jelas.
Praveen
40

Anda dapat menggunakan moment.js untuk melakukan ini.

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

Keluaran:

16:30:03
brandonscript
sumber
4
Terima kasih remus. Aku tidak akan pernah lagi jatuh ke lubang kelinci yang memalukan dari manipulasi waktu.
matlembo
Terima kasih sobat! Semua orang membuat semuanya jadi rumit! Ini adalah respons paling ringkas untuk seseorang yang perlu mengambil baris kode cepat untuk hal sederhana!
ChairmanMeow
5
Sembunyikan 120 byte ganjil yang diperlukan untuk melakukan ini dengan menyertakan skrip 20k +! jenius
frumbert
1
Hei, saya tidak mengatakan Anda harus selalu menggunakannya, tetapi jika Anda sudah melakukannya, mengapa tidak melakukannya dengan cara yang mudah 😉
brandonscript
30
new Date().toTimeString().slice(0,8)

Perhatikan bahwa toLocaleTimeString () mungkin mengembalikan sesuatu seperti 9:00:00 AM.

Thorsten
sumber
1
Ini adalah pertama kalinya saya melihat seseorang membuat contoh kode yang memberi contoh tanggal tanpa Tanggal baru () ... apakah itu normal untuk menggunakan (Tanggal baru)?
OG Sean
6

Gunakan cara ini:

var d = new Date();
localtime = d.toLocaleTimeString('en-US', { hour12: false });

Hasil: 18:56:31

Thomas
sumber
2

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>

Cara yang sangat sederhana menggunakan moment.js dan setInterval .

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

Keluaran sampel

Menggunakan setInterval()set ke 1000ms atau 1 detik, output akan diperbarui setiap 1 detik.

15:25:50

Beginilah cara saya menggunakan metode ini di salah satu proyek sampingan saya.

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

Mungkin Anda bertanya-tanya apakah penggunaan setInterval()akan menyebabkan beberapa masalah kinerja.

Apakah CPU setInterval intensif?

Saya tidak berpikir setInterval secara inheren akan menyebabkan masalah kinerja yang signifikan bagi Anda. Saya menduga reputasinya mungkin berasal dari era sebelumnya, ketika CPU kurang kuat. ... - suatu hari nanti

Tidak, setInterval tidak membutuhkan CPU yang intensif. Jika Anda memiliki banyak interval yang berjalan pada siklus yang sangat pendek (atau operasi yang sangat kompleks yang berjalan pada interval yang cukup panjang), maka itu dapat dengan mudah menjadi intensif CPU, tergantung pada apa yang dilakukan interval Anda dan seberapa sering mereka melakukannya. ... - aroth

Tapi secara umum, menggunakan setInterval seperti banyak hal di situs Anda dapat memperlambat banyak hal. 20 secara bersamaan menjalankan interval dengan pekerjaan yang lebih atau kurang berat akan mempengaruhi pertunjukan. Dan sekali lagi .. Anda benar-benar dapat mengacaukan bagian mana pun. Saya rasa itu bukan masalah setInterval. ... - jAndy

Vadamadafaka
sumber
2
new Date().toLocaleTimeString('it-IT')

The it-ITlokal terjadi pad jam jika diperlukan dan menghilangkan PM atau AM01:33:01

iamnotsam
sumber
Apa yang ditawarkan kode ini hanya menjawab dari solusi yang ada yang menunjukkan cara menggunakan .toLocaleTimeString()?
Jason Aller
bagian 'it-IT' berarti ia mengeluarkan persis seperti yang diminta console.log (event.toLocaleTimeString ('it-IT')); // output yang diharapkan: 01:15:30 jika Anda tidak menyertakan 'it-IT' maka Anda mendapatkan sesuatu seperti 1:15:30 PMyang melewatkan 0 awal dan menambahkan `PM` yang harus Anda hapus jika tidak. Saya mengedit jawaban saya untuk menjernihkan itu.
iamnotsam
1

Kode ini akan menampilkan waktu saat ini dalam format HH: MM: SS di konsol, ini memperhitungkan zona waktu 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
vanjavk.dll
sumber
0

Ini adalah contoh cara mengatur waktu dalam div (only_time) menggunakan javascript.

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>
ASAbir
sumber
Meskipun blok kode ini mungkin menjawab pertanyaan tersebut, akan lebih baik jika Anda memberikan sedikit penjelasan mengapa hal itu terjadi.
Peter
0
new Date().toLocaleTimeString()
Dilushan
sumber