Bagaimana cara mendapatkan waktu saat ini hanya dalam JavaScript

144

Bagaimana saya bisa mendapatkan waktu saat ini dalam JavaScript dan menggunakannya dalam timepicker?

Saya mencoba var x = Date()dan mendapatkan:

Sel 15 Mei 2012 05:45:40 GMT-0500

Tapi saya hanya perlu waktu saat ini, misalnya, 05:45

Bagaimana saya bisa menetapkan ini ke variabel?

hss
sumber
15
@swati Karena kami ingin ini menjadi sumber goto kami untuk semua masalah pemrograman kami. Mungkin orang lain memiliki solusi yang lebih baik dan dengan cara ini mereka semua dapat dicantumkan sebagai referensi di satu tempat.
Alfred
27
@swati - Saya tahu Anda menulis komentar itu lebih dari 3 tahun yang lalu, tetapi sekarang halaman ini adalah hasil pencarian # 1 di Google untuk "get time part JavaScript". Ingatlah bahwa pertanyaan hari ini ADALAH hasil pencarian besok.
David Deutsch
@DavidDeutsch Ini harus seperti tajuk tebal pada halaman Ajukan pertanyaan. "pertanyaan hari ini ADALAH hasil pencarian besok"
Vaulstein

Jawaban:

220
var d = new Date("2011-04-20T09:30:51.01");
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

atau

var d = new Date(); // for now
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51
Royi Namir
sumber
1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 outputNaN
Chinmay235
1
@ Chinmay235 Ditambahkan Tjadi sekarang ini adalah universal universal iso. BTW saya hanya melihat undefineddi IE. Tetap Diperbaiki.
Royi Namir
126

Pendek dan sederhana:

new Date().toLocaleTimeString(); // 11:18:48 AM
//---
new Date().toLocaleDateString(); // 11/16/2015
//---
new Date().toLocaleString(); // 11/16/2015, 11:18:48 PM

4 jam kemudian (gunakan milisec: sec == 1000):

new Date(new Date().getTime() + 4*60*60*1000).toLocaleTimeString(); // 3:18:48 PM or 15:18:48

2 hari sebelumnya:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015
snir
sumber
6
Perhitungan penambahan dan pengurangan sangat membantu!
Dov Miller
Apa yang harus saya ubah jika saya ingin menambahkan 1 menit saja?
lets0code
80

Dapatkan dan atur waktu saat ini secara efisien menggunakan javascript

Saya tidak dapat menemukan solusi yang melakukan apa yang saya butuhkan. Saya ingin kode yang kecil dan bersih jadi saya datang dengan ini:

(Atur sekali di master.js Anda dan aktifkan bila diperlukan.)

JAVASCRIPT MURNI

function timeNow(i) {
  var d = new Date(),
    h = (d.getHours()<10?'0':'') + d.getHours(),
    m = (d.getMinutes()<10?'0':'') + d.getMinutes();
  i.value = h + ':' + m;
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />


MEMPERBARUI

Sekarang ada dukungan browser yang cukup untuk hanya menggunakan: toLocaleTimeString

Untuk tipe html5time formatnya harus hh:mm.

function timeNow(i) {
  i.value = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />

Try it on jsfiddle

DreamTeK
sumber
3
@ gcoleman0828 saya terlambat ke pesta. Terima kasih atas suaranya :)
DreamTeK
... Apakah Anda mengetik 'get' sebagai 'set'? Jika tidak, jawaban Anda tidak cocok dengan judul Anda dan judul Anda tidak cocok dengan pertanyaan itu.
Dana Gugatan Monica
@QPaysTaxes Jawaban saya melakukan keduanya. Javascript mendapatkan waktu dan html menunjukkan kepada pengguna bagaimana kode dapat digunakan untuk mengatur waktu juga jika diperlukan. Saya telah memperbarui jawaban saya untuk mencerminkan hal itu. terima kasih telah menunjukkannya.
DreamTeK
waktu menunjukkan 30 menit di belakang untuk saya, jika saya mengklik Set time, itu benar tetapi dalam waktu militer. Setel waktu harus beralih tebakan yang tidak berfungsi
Ciasto piekarz
ToLocaleTime akan memiliki format berbeda tergantung pada lokal browser, sebagai gantinya Anda dapat menggunakan lokal tetap tanpa PM / AM seperti fr untuk mendapatkan waktu yang cocok dengan format waktu HTML5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel
24

Mencoba

new Date().toLocaleTimeString().replace("/.*(\d{2}:\d{2}:\d{2}).*/", "$1");

Atau

new Date().toTimeString().split(" ")[0];
Fernando Gomes
sumber
Dalam bentuk kedua jika Anda hanya menggunakan toString () dan mengubah 0 ke 4 Anda juga mendapatkan hanya waktu dalam format HH: MM: SS.
BigMac66
9

Maksudmu:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
Sudhir Bastakoti
sumber
8

const date = Date().slice(16,21);
console.log(date);

Parmeet Singh
sumber
6

Coba ini:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
StoicFnord
sumber
5
function getCurrentTime(){
    var date = new Date();
    var hh = date.getHours();
    var mm = date.getMinutes();

    hh = hh < 10 ? '0'+hh : hh; 
    mm = mm < 10 ? '0'+mm : mm;

    curr_time = hh+':'+mm;
    return curr_time;
}
Hamfri
sumber
Jika yang Anda butuhkan adalah waktu tanpa detik dan Anda tidak memerlukan bagian-bagian PM atau AM, kode di atas akan bekerja dengan sempurna.
Hamfri
3

Ini bagaimana Anda bisa melakukannya.

const date = new Date();
const time = date.toTimeString().split(' ')[0].split(':');
console.log(time[0] + ':' + time[1])

Parvez Rahaman
sumber
1
Ini tidak lebih samar atau lebih baik daripada new Date().toTimeString().slice(0, 5).
Dan Dascalescu
1
@DanDascalescu Sebagai (terutama) Python dev Saya menghargai cryptic one-liner yang Anda berikan dan tidak akan menggulir cukup jauh ke bawah halaman untuk melihat jawaban singkat Parmeet Singh (yang saya asumsikan Anda maksudkan). Terima kasih!
Jason R Stevens CFA
2

ini -

var x = new Date(); 
var h = x.getHours(); 
var m = x.getMinutes(); 
var s = x.getSeconds(); 

begitu-

 x = date
h = hours
m = mins
s = seconds
Vibhaas Srivastava
sumber
1

Anda cukup menggunakan metode ini.

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));

Omer Farad
sumber
0

Ini jalan terpendek.

var now = new Date().toLocaleTimeString();
console.log(now)

Berikut ini juga cara manipulasi string yang tidak disebutkan.

var now = new Date()
console.log(now.toString().substr(16,8))

sumber
Yang terpendek adalah Date().substr(16, 5). Anda tidak perlu toString().
Dan Dascalescu
0

Tetapkan ke variabel dan tampilkan.

time = new Date();

var hh = time.getHours();
var mm = time.getMinutes();
var ss = time.getSeconds() 

document.getElementById("time").value = hh + ":" + mm + ":" + ss;
mhtmalpani
sumber
Mengapa menganggap ini perlu disimpan dalam suatu timeelemen? OP meminta untuk menyimpan dalam variabel, dan hanya untuk jam dan menit. let time = Date().substr(16, 5)apakah itu.
Dan Dascalescu
0

Fungsi sederhana untuk memisahkan Tanggal dan Waktu dan dengan format yang kompatibel dengan input HTML Waktu dan Tanggal

function formatDate(date) {
  var d         = new Date(date),
      month = '' + (d.getMonth() + 1),
      day   = '' + d.getDate(),
      year  = d.getFullYear();

  if (month.length < 2) month = '0' + month;
  if (day.length < 2) day = '0' + day;

  return [year, month, day].join('-');
}

function formatTime(date) {
        var hours   = new Date().getHours() > 9 ? new Date().getHours() : '0' + new Date().getHours()
        var minutes = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes()

        return hours + ':' + minutes
}
AbdessamadEL
sumber
-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();
Saurabh Agarwal
sumber
1
Bagaimana ini menambahkan sesuatu ke jawaban yang ada? Masalah intinya adalah tidak adanya new.
RomainValeri
-2

Ini bekerja untuk saya tetapi ini tergantung pada apa yang Anda dapatkan ketika Anda menekan Date():

Date().slice(16,-12)
Luffy
sumber
Ini terlihat identik dengan jawaban yang ada: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: tidak identik. Ini membuang zona kedua dan waktu juga.
Dan Dascalescu
-3
var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        console.log(strTime);
        $scope.time = strTime;

        date.setDate(date.getDate()+1);
        month = '' + (date.getMonth() + 1),
        day = '' + date.getDate(1),
        year = date.getFullYear();
        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
        var tomorrow = [year, month, day].join('-');
        $scope.tomorrow = tomorrow;
pengguna9720939
sumber