2013-08-14 11 views

Odpowiedz

61

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 użyciu JavaScript tylko

Aktualizacja

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(); 
})(); 
39

Możesz to zrobić w Javascript.

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

Obecnie zwraca 15:5:18. Zwróć uwagę, że jeśli którakolwiek z wartości jest mniejsza niż 10, będą wyświetlane tylko za pomocą jednej cyfry, a nie dwóch.

sprawdzić w JSFiddle

Aktualizacje:
Dla prefiksem 0 spróbujmy

var time = new Date(); 
console.log(
    ("0" + time.getHours()).slice(-2) + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2)); 
+1

Dzięki za odpowiedź – user2648752

+0

Proszę odpowiedzieć na to pytanie .http: //stackoverflow.com/questions/18227667/how-to-formate-dynamically-table-in-jquery/18228394? Noredirect = 1 # 18228394 – user2648752

+0

Proszę odpowiedzieć na to pytanie potrzebuję aby pokazać czas w pierwszej kolumnie. – user2648752

29

Można użyć moment.js to zrobić.

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

Wyjścia:

16:30:03 
+2

Dziękuję remus. Nigdy więcej nie spadnę z niegodnej króliczej dziury manipulacji JS datetime. – matlembo

+0

Dzięki człowieku! Każdy inny sprawia, że ​​wszystko jest tak skomplikowane! Jest to najbardziej zwięzła odpowiedź dla kogoś, kto musi pobrać szybką linię kodu na prostą rzecz! – ChairmanMeow

+0

@ChairmanMeow haha ​​tak true – brandonscript

31

można użyć natywną funkcję Date.toLocaleTimeString():

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

Spowoduje to wyświetlenie np .:

"11:33:01" 

Znalazłem go na http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp

+1

To było naprawdę pomocne! – amyloula

+2

Myślę, że to powinna być akceptowana odpowiedź, ponieważ odpowiada dokładnie na pytanie, używa natywnej funkcji i jest najkrótszym działającym kodem, aby uzyskać to, o co prosi. – vchrizz

+2

3:59:45 to jest to, co mi dała. To nie jest wymagany format. – user3070485

6
(new Date).toTimeString().slice(0,8) 

Należy pamiętać, że toLocaleTimeString() może zwrócić coś w rodzaju 9:00:00 AM.

+0

Po raz pierwszy widziałem, jak ktoś wstawił przykład kodu, który mógłby utworzyć datę bez nowej daty() ... czy to normalne (nowa data)? –

+0

@OGSean: Awesome to nowa norma. – nobar

-1

To jest przykład jak ustawić czas w div (only_time) używając javascript.

function date_time() { 
    var date = new Date(); 
    var am_pm = "AM"; 
    var hour = date.getHours(); 
    if(hour>=12){ 
     am_pm = "PM"; 
    } 
    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> 
+0

Podczas gdy ten blok kodu może odpowiedzieć na pytanie, najlepiej byłoby podać wyjaśnienie, dlaczego tak się dzieje. – Peter

Powiązane problemy