Şu anki saati yalnızca JavaScript ile nasıl edinebilirim?


144

JavaScript'te geçerli saati nasıl alabilirim ve bir zamanlayıcıda nasıl kullanabilirim?

Denedim var x = Date()ve aldım:

Sal 15 Mayıs 2012 05:45:40 GMT-0500

Ama sadece şimdiki zamana ihtiyacım var, örneğin, 05:45

Bunu bir değişkene nasıl atayabilirim?


15
@swati Çünkü bunun tüm programlama problemlerimiz için goto kaynağımız olmasını istiyoruz. Belki başka birinin daha iyi bir çözümü vardır ve bu şekilde hepsi bir noktada referans olarak listelenebilir.
Alfred

27
@swati - Bu yorumu 3 yıl önce yazdığınızı biliyorum, ancak şimdi bu sayfa "get time part JavaScript" için Google'daki 1 numaralı arama sonucudur. Bugünün sorusunun yarının arama sonuçları olduğunu unutmayın.
David Deutsch

@DavidDeutsch Bu, Soru sor sayfasında kalın harflerle yazılmış bir başlık gibi olmalıdır. "bugünün sorusu yarının arama sonuçları IS"
Vaulstein

Yanıtlar:


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

veya

var d = new Date(); // for now
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 çıktıNaN
Chinmay235 11:06

1
@ Chinmay235 Eklendi Tşimdi doğru evrensel iso. BTW Yalnızca undefinedIE'de görüyorum . Her neyse Sabit.
Royi Namir

126

Kısa ve basit:

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

4 saat sonra (milisec: sec == 1000 kullanın):

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

2 gün önce:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015

6
Toplama ve çıkarma hesaplamaları faydalıdır!
Dov Miller

Bunun yerine 1 dakika eklemek istersem, neyi değiştirmem gerekir?
lets0code

80

Javascript kullanarak şimdiki zamanı verimli bir şekilde alın ve ayarlayın

Tam olarak ihtiyacım olanı yapan bir çözüm bulamadım. Temiz ve küçük kod istedim bu yüzden bu ile geldi:

(Master.js'nizde bir kez ayarlayın ve gerektiğinde çağırın.)

SAF JAVASCRIPT

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" />


GÜNCELLEME

Artık sadece kullanmak için yeterli tarayıcı desteği var: toLocaleTimeString

İçin html5 tipi timebiçimi olmalıdır 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


3
@ gcoleman0828 Partiye geç kaldım. Oy için teşekkürler :)
DreamTeK

... 'al'ı' set 'olarak yazdınız mı? Değilse, yanıtınız başlığınızla ve başlığınız soru ile eşleşmiyor.
Monica'nın Davası

@ QPaysTaxes Cevabım her ikisini de yapıyor. Javascript zamanı alır ve html kullanıcıya kodun zamanı gerekirse ayarlamak için nasıl kullanılabileceğini gösterir. Cevabımı bunu yansıtacak şekilde güncelledim. işaret ettiğiniz için teşekkürler.
DreamTeK

Zaman benim için 30 dakika geride görünüyor, Saati ayarla'yı tıklarsam, doğru ama askeri zamanda. Set zaman işe yaramaz tahmin geçiş olmalıdır
Ciasto piekarz

ToLocaleTime, tarayıcının yerel ayarına bağlı olarak farklı bir biçime sahip olacaktır; bunun yerine, html5 saat biçimiyle eşleşen bir zaman elde etmek için PM / AM olmadan fr gibi sabit bir yerel ayar kullanabilirsiniznew Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Deneyin

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

Veya

new Date().toTimeString().split(" ")[0];

İkinci formda, sadece toString () kullanırsanız ve 0 değerini 4 olarak değiştirirseniz, yalnızca SS: DD: SS biçiminde de zaman alırsınız.
BigMac66

9

Şunu mu demek istediniz?

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();


6

Bunu dene:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();

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;
}

İhtiyacınız olan tek şey saniye olmadan zaman ise ve PM veya AM parçalarına ihtiyacınız yoksa, yukarıdaki kod mükemmel şekilde çalışmalıdır.
Hamfri


3

Bunu nasıl yapabileceğiniz.

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


1
Bu daha az şifreli veya daha iyi değil new Date().toTimeString().slice(0, 5).
Dan Dascalescu

1
@DanDascalescu (Öncelikle) bir Python dev olarak, sağladığınız şifreli tek astarı takdir ediyorum ve Parmeet Singh'in özlü cevabını (bahsettiğinizi varsayıyorum) görmek için sayfada yeterince aşağı kaydırmazdım. Teşekkürler!
Jason R Stevens CFA

2

bu -

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

yani-

 x = date
h = hours
m = mins
s = seconds

1

Bu yöntemleri kullanabilirsiniz.

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


0

Bu en kısa yol.

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

Burada da belirtilmeyen dize manipülasyonu yoluyla bir yol.

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

En kısa olanı Date().substr(16, 5). İhtiyacınız yok toString().
Dan Dascalescu

0

Değişkenlere atayın ve görüntüleyin.

time = new Date();

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

document.getElementById("time").value = hh + ":" + mm + ":" + ss;

Neden bunun bir timeelemanda saklanması gerektiğini varsayalım ? OP bir değişkeni depolamayı istedi, sadece saat ve dakika. let time = Date().substr(16, 5)bunu yapar.
Dan Dascalescu

0

Tarih ve Saati ayırmak ve Saat ve Tarih HTML girişi ile uyumlu formatla basit işlevler

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
}

-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();

1
Bu mevcut cevaplara nasıl bir şey ekliyor? Temel sorun, olmamasıydı new.
RomainValeri


-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;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.