Як отримати поточний час лише в JavaScript


144

Як я можу отримати поточний час у JavaScript та використовувати його в таймпекері?

Я спробував var x = Date()і отримав:

Вт 15 травня 2012 05:45:40 GMT-0500

Але мені потрібен лише поточний час, наприклад, 05:45

Як я можу призначити цю змінну?


15
@swati Тому що ми хочемо, щоб це було нашим goto джерелом для всіх наших проблем із програмуванням. Можливо, хтось інший має краще рішення, і таким чином вони можуть бути перераховані як довідник в одному місці.
Альфред

27
@swati - я знаю, що ви писали цей коментар понад 3 роки тому, але тепер ця сторінка є результатом пошуку №1 в Google для "отримати частину часу JavaScript". Майте на увазі, що питання сьогодні - це результати пошуку завтра.
David Deutsch

@DavidDeutsch Це має бути як заголовок жирним шрифтом на сторінці Задати питання. "питання сьогодні - це результати пошуку завтра"
Vaulstein

Відповіді:


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

або

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 вихідNaN
Chinmay235

1
@ Chinmay235 Додано, Tтому тепер це правильний універсальний iso. До речі, я бачу лише undefinedв IE. Все одно виправлено.
Royi Namir

126

Короткий і простий:

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

Через 4 години (використовуйте milisec: sec == 1000):

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

2 дні до:

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

6
Розрахунок додавання і віднімання корисний!
Дов Міллер

Що мені потрібно змінити, якщо я хотів би додати 1 хвилину замість цього?
lets0code

80

Отримайте та встановіть поточний час ефективно за допомогою JavaScript

Я не зміг знайти рішення, яке зробить саме те, що мені потрібно. Я хотів чистого і крихітного коду, тому придумав таке:

(Встановіть один раз у своєму master.js та зателефонуйте, коли потрібно.)

ЧИСТИЙ ЯВАСКРИПТ

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


ОНОВЛЕННЯ

Зараз існує достатня підтримка браузера для простого використання: toLocaleTimeString

Для html5 введіть timeформат 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 Я спізнився на вечірку. Дякую за голос :)
DreamTeK

... Ви друкували "get" як "set"? Якщо ні, то ваша відповідь не відповідає вашій назві, а ваша назва не відповідає питанню.
Фонд позову Моніки

@QPaysTaxes Моя відповідь робить і те, і інше. Javascript отримує час, а html показує користувачеві, як можна використовувати код для встановлення часу, якщо це потрібно. Я оновив свою відповідь, щоб це відобразити. дякую, що вказали на це.
DreamTeK

час на мене показує 30 хвилин позаду, якщо я натискаю Встановити час, то це правильно, але у військовий час. Встановити час слід з перемиканням здогадуючись, що це не спрацює
Ciasto piekarz

ToLocaleTime матиме різний формат залежно від мови браузера, замість цього ви можете використовувати фіксовану локаль без PM / AM, як fr, щоб отримати формат часу, що відповідає html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Спробуйте

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

Або

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

У другій формі, якщо ви використовуєте просто toString () та зміните 0 на 4, ви також отримаєте саме час у форматі HH: MM: SS.
BigMac66



6

Спробуйте це:

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

Якщо все, що вам потрібно, - це час без секунд, і вам не потрібні деталі PM або AM, код вище повинен працювати бездоганно.
Гамфрі


3

Це як ви можете це зробити.

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


1
Це не менш вибагливо або краще new Date().toTimeString().slice(0, 5).
Дан Даскалеску

1
@DanDascalescu Як (в першу чергу) Python dev, я ціную криптовалют, який ви надали, і не прокрутив би досить далеко вниз по сторінці, щоб побачити стислу відповідь Пармета Сінга (на яку я припускаю, що ви мали на увазі). Дякую!
Джейсон Р Стівенс CFA

2

це -

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

так-

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

1

Можна просто використовувати ці методи.

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

Це найкоротший шлях.

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

Ось також спосіб через маніпуляції з рядком, про який не згадувалося.

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

Найкоротший - Date().substr(16, 5). Вам не потрібно toString().
Дан Даскалеску

0

Призначити змінні та відобразити їх.

time = new Date();

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

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

Чому припускають, що це потрібно зберігати в timeелементі? ОП попросили зберігати в змінній, і лише годину та хвилину. let time = Date().substr(16, 5)робить це.
Дан Даскалеску

0

Прості функції, щоб розділити дату і час, а також сумісний формат із введенням часу та дати HTML

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
Як це додати що-небудь до існуючих відповідей? Основною проблемою була відсутність 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;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.