Wie erhalte ich die aktuelle Uhrzeit nur in JavaScript?


144

Wie kann ich die aktuelle Zeit in JavaScript abrufen und in einem Timepicker verwenden?

Ich habe versucht var x = Date()und bekommen:

Di 15. Mai 2012 05:45:40 GMT-0500

Aber ich brauche zum Beispiel nur die aktuelle Zeit 05:45

Wie kann ich das einer Variablen zuordnen?


15
@swati Weil wir wollen, dass dies unsere Quelle für all unsere Programmierprobleme ist. Vielleicht hat jemand anderes eine bessere Lösung und auf diese Weise können alle an einer Stelle als Referenz aufgeführt werden.
Alfred

27
@swati - Ich weiß, dass Sie diesen Kommentar vor über 3 Jahren geschrieben haben, aber jetzt ist diese Seite das beste Suchergebnis in Google für "get time part JavaScript". Beachten Sie, dass die Frage von heute die Suchergebnisse von morgen sind.
David Deutsch

@DavidDeutsch Dies sollte wie eine fett gedruckte Überschrift auf der Seite "Frage stellen" sein. "Die Frage von heute ist das Suchergebnis von morgen"
Vaulstein

Antworten:


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

oder

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 AusgabeNaN
Chinmay235

1
@ Chinmay235 Hinzugefügt T, jetzt ist es die richtige universelle ISO. Übrigens sehe ich nur undefinedim IE. Sowieso behoben.
Royi Namir

125

Kurz und einfach:

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

4 Stunden später (benutze milisec: sec == 1000):

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

2 Tage vorher:

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

6
Die Berechnung des Addierens und Subtrahierens ist hilfreich!
Dov Miller

Was müsste ich ändern, wenn ich stattdessen 1 Minute hinzufügen möchte?
Let's0code

78

Holen Sie sich die aktuelle Zeit effizient mit Javascript und stellen Sie sie ein

Ich konnte keine Lösung finden, die genau das tat, was ich brauchte. Ich wollte sauberen und winzigen Code, also kam ich auf Folgendes:

(Einmal in Ihrer master.js festlegen und bei Bedarf aufrufen.)

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


AKTUALISIEREN

Es gibt jetzt genügend Browser-Unterstützung, um einfach zu verwenden: toLocaleTimeString

Für den HTML5- Typ timemuss das Format sein 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 Ich war zu spät zur Party. Danke für die Abstimmung :)
DreamTeK

... Hast du 'get' als 'set' getippt? Wenn nicht, stimmt Ihre Antwort nicht mit Ihrem Titel überein und Ihr Titel stimmt nicht mit der Frage überein.
Fund Monica Klage

@QPaysTaxes Meine Antwort macht beides. Das Javascript erhält die Zeit und das HTML zeigt dem Benutzer, wie der Code verwendet werden kann, um die Zeit auch bei Bedarf einzustellen. Ich habe meine Antwort aktualisiert, um dies widerzuspiegeln. Vielen Dank für den Hinweis.
DreamTeK

Die Zeit liegt für mich 30 Minuten zurück. Wenn ich auf Zeit einstellen klicke, ist dies korrekt, aber in militärischer Zeit. Die eingestellte Zeit sollte ein Umschalten sein, das nicht funktioniert
Ciasto piekarz

Die toLocaleTime hat je nach Gebietsschema des Browsers ein anderes Format. Stattdessen können Sie ein festes Gebietsschema ohne PM / AM wie fr verwenden, um ein zeitlich passendes HTML5-Zeitformat zu erhaltennew Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Versuchen

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

Oder

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

Wenn Sie in der zweiten Form nur toString () verwenden und die 0 in eine 4 ändern, erhalten Sie auch nur die Zeit im Format HH: MM: SS.
BigMac66

9

Meinst du:

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


6

Versuche dies:

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

Wenn Sie nur Zeit ohne Sekunden benötigen und keine PM- oder AM-Teile benötigen, sollte der obige Code einwandfrei funktionieren.
Hamfri


3

So können Sie es machen.

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


1
Dies ist nicht weniger kryptisch oder besser als new Date().toTimeString().slice(0, 5).
Dan Dascalescu

1
@DanDascalescu Als (hauptsächlich) Python-Entwickler schätze ich den kryptischen Einzeiler, den Sie bereitgestellt haben, und wäre nicht weit genug auf der Seite gescrollt, um Parmeet Singhs prägnante Antwort zu sehen (auf die Sie sich vermutlich beziehen). Vielen Dank!
Jason R Stevens CFA

2

Dies -

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

so-

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

1

Sie können diese Methoden einfach verwenden.

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

Dies ist der kürzeste Weg.

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

Hier ist auch ein Weg durch die String-Manipulation, der nicht erwähnt wurde.

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

Das kürzeste ist Date().substr(16, 5). Du brauchst nicht toString().
Dan Dascalescu

0

Variablen zuweisen und anzeigen.

time = new Date();

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

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

Warum sollte angenommen werden, dass dies in einem timeElement gespeichert werden muss ? OP bat um das Speichern in einer Variablen und nur für die Stunde und Minute. let time = Date().substr(16, 5)tut das.
Dan Dascalescu

0

Einfache Funktionen zum Trennen von Datum und Uhrzeit und mit kompatiblem Format mit HTML-Eingabe von Uhrzeit und Datum

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
Wie fügt dies etwas zu den vorhandenen Antworten hinzu? Das Kernproblem war das Fehlen von 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;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.