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?

hss
quelle
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
Royi Namir
quelle
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
schnarchen
quelle
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

DreamTeK
quelle
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];
Fernando Gomes
quelle
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();
Sudhir Bastakoti
quelle
8

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

Parmeet Singh
quelle
6

Versuche dies:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
StoicFnord
quelle
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
quelle
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])

Parvez Rahaman
quelle
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
Vibhaas Srivastava
quelle
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" }));

Omer Farad
quelle
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))

quelle
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;
mhtmalpani
quelle
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
}
AbdessamadEL
quelle
-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();
Saurabh Agarwal
quelle
1
Wie fügt dies etwas zu den vorhandenen Antworten hinzu? Das Kernproblem war das Fehlen von new.
RomainValeri
-2

Das hat bei mir funktioniert, aber das hängt davon ab, was Sie bekommen, wenn Sie schlagen Date():

Date().slice(16,-12)
Ruffy
quelle
Dies sieht identisch aus mit einer vorhandenen Antwort: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: es ist nicht identisch. Dies gibt auch die zweite und die Zeitzone aus.
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;
user9720939
quelle