Як показати поточний час у JavaScript у форматі HH: MM: SS?


96

Підкажіть, будь ласка, як встановити час у такому форматі HH: MM: SS .Я хочу встановити це в div?


Ось мій код .. jsfiddle.net/naveennsit/yd99X
user2648752

1
Але проблема в тому, що в ньому є ПМ та АР. Мені це не потрібно. По-друге, формат 24
user2648752

@ user2648752 перевірити мою відповідь демо jsfiddle.net/cse_tushar/fKKSb
Гупта - curioustushar

1
Гм ... Чому на запитанні позначено дату , хоча користувач задає час?
Ллойд Домінік,

Відповіді:


104

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, використовуючи лише javaScript

Оновлення

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

111

Ви можете використовувати рідну функцію Date.toLocaleTimeString():

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

Тут відобразиться, наприклад:

"11:33:01"

Я знайшов його на http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp


5
Я думаю, це повинна бути прийнята відповідь, оскільки вона відповідає точно на питання, використовує рідну функцію і є найкоротшим робочим кодом, щоб отримати те, про що просять.
vchrizz

10
15:59:45 - це те, що мені дало. Це не потрібний формат.
Іван

toLocaleTimeString не є функцією
Користувач

59

Ви можете зробити це в Javascript.

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

В даний час він повертається 15:5:18. Зверніть увагу, що якщо будь-яке із значень менше 10, вони відображатимуться з використанням лише однієї цифри, а не двох.

Перевірте це в JSFiddle

Оновлення:
Для префіксу 0 спробуйте

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

Будь ласка, дайте відповідь на це запитання. stackoverflow.com/questions/18227667 / ...
user2648752

Будь ласка, дайте відповідь на це запитання. Мені потрібно вказати час у першій колонці.
user2648752

так, але мені потрібно додати три стовпці, як написано під питанням. Будь ласка, прочитайте питання про сер. Мені потрібно додати час до першого стовпця та дані в реальному часі до другого стовпця
user2648752

Вам потрібно враховувати хвилини та секунди <10, як це зробив Тушар у своїй відповіді, інакше він не буде показувати провідне "0".
keepitreal

@CleverGirl Я намагався дати просту відповідь, тому написав це. Оскільки ви згадали про префікс 0, я хотів би зробити це за допомогою відповіді @ user113716, яка була зображена дуже чітко.
Praveen

40

Ви можете використовувати moment.js для цього.

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

Виходи:

16:30:03

4
Дякую Remus. Я ніколи більше не впаду в безславну кролячу нору маніпуляцій з дата-часом js.
matlembo

Дякую людино! Кожен інший робить все настільки складним! Це найкоротша відповідь для тих, кому потрібно взяти швидкий рядок коду для простої речі!
Голова,

5
Приховайте 120 непарних байт, необхідних для цього, включивши скрипт 20k +! genius
frumbert 02

1
Гей, я не кажу , що ви повинні завжди використовувати його, але якщо ви вже, чому б не зробити це легкий шлях 😉
brandonscript

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

Зверніть увагу, що toLocaleTimeString () може повернути щось на зразок 9:00:00 AM.


1
Це вперше, коли я бачив, як хтось робить приклад коду, який створює інстанцію дати без new Date () ... чи нормально це використовувати (new Date)?
OG Sean

5

Використовуйте цей спосіб:

var d = new Date();
localtime = d.toLocaleTimeString('en-US', { hour12: false });

Результат: 18:56:31


2

function realtime() {
  
  let time = moment().format('h:mm:ss a');
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('h:mm:ss a');
    document.getElementById('time').innerHTML = time;
  }, 1000)
}

realtime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>

Дуже простий спосіб за допомогою moment.js та setInterval .

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)

Вибір зразка

Використовуючи setInterval()значення 1000 мс або 1 секунду, вихід буде оновлюватися кожні 1 секунду.

15:25:50 вечора

Ось як я використовую цей метод в одному зі своїх побічних проектів.

setInterval(() => {
  this.time = this.shared.time;
}, 1000)

Можливо, вам цікаво, чи використання setInterval()може спричинити проблеми з продуктивністю.

Чи інтенсивний процесор setInterval?

Я не думаю, що setInterval по суті призведе до значних проблем із продуктивністю. Я підозрюю, що репутація може походити з більш ранньої ери, коли центральні процесори були менш потужними. ... - самотній день

Ні, setInterval сам по собі не є інтенсивним процесором. Якщо у вас багато інтервалів, що працюють на дуже коротких циклах (або дуже складна операція, що працює на помірно великому інтервалі), то це може легко стати інтенсивним процесором, залежно від того, що саме роблять ваші інтервали і як часто вони це роблять. ... - aroth

Але загалом використання setInterval дійсно подобається багато чого на вашому сайті може сповільнити ситуацію. 20 одночасних інтервалів запуску з більш-менш важкою роботою вплинуть на шоу. І знову ж таки .. ви дійсно можете зіпсувати будь-яку частину, я думаю, це не проблема setInterval. ... - jAndy


2
new Date().toLocaleTimeString('it-IT')

Місцеві it-ITналаштування, якщо потрібно, зазначають годину і пропускають PM або AM01:33:01


Що пропонує цей код лише відповідь стосовно існуючих рішень, які показують, як використовувати .toLocaleTimeString()?
Джейсон Аллер,

частина 'it-IT' означає, що вона видає точно так, як запитували console.log (event.toLocaleTimeString ('it-IT')); // очікуваний вихід: 01:15:30 якщо ви не включите "it-IT", то ви отримаєте щось на зразок того, 1:15:30 PMщо пропускає початкове 0 і додає "PM", яке вам доведеться видалити в іншому випадку. Я відредагував свою відповідь, щоб це прояснити.
iamnotsam

1

Цей код видасть поточний час у форматі HH: MM: SS у консолі, він враховує часові пояси GMT.

var currentTime = Date.now()
var GMT = -(new Date()).getTimezoneOffset()/60;
var totalSeconds = Math.floor(currentTime/1000);
seconds = ('0' + totalSeconds % 60).slice(-2);
var totalMinutes = Math.floor(totalSeconds/60);
minutes = ('0' + totalMinutes % 60).slice(-2);
var totalHours = Math.floor(totalMinutes/60);
hours = ('0' + (totalHours+GMT) % 24).slice(-2);
var timeDisplay = hours + ":" + minutes + ":" + seconds;
console.log(timeDisplay);
//Output is: 11:16:55

0

Це приклад того, як встановити час у div (only_time) за допомогою javascript.

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

Хоча цей блок коду може відповісти на запитання, найкраще, якщо ви зможете надати невелике пояснення, чому він це робить.
Пітер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.