Как получить текущее время только в JavaScript

155

Как я могу получить текущее время в JavaScript и использовать его в таймпикере?

Я попробовал var x = Date()и получил:

Вт 15 мая 2012 г. 05:45:40 GMT-0500

Но мне нужно только текущее время, например, 05:45

Как я могу присвоить это переменной?

hss
источник
15
@swati Потому что мы хотим, чтобы это был наш исходный код для всех наших проблем программирования. Может быть, у кого-то есть лучшее решение, и таким образом все они могут быть перечислены в качестве справочных в одном месте.
Alfred
28
@swati - Я знаю, что вы написали этот комментарий более 3 лет назад, но теперь эта страница занимает первое место в результатах поиска Google по запросу "получить часть времени JavaScript". Имейте в виду, что сегодняшний вопрос - это завтрашние результаты поиска.
Дэвид Дойч
@DavidDeutsch Это должно быть похоже на заголовок, выделенный жирным шрифтом на странице Задать вопрос. «Сегодняшний вопрос - это завтрашние результаты поиска»
Vaulstein

Ответы:

235
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. В любом случае исправлено.
Рой Намир
138

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

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 минуту?
Let's0code
84

Эффективно получайте и устанавливайте текущее время с помощью javascript

Я не мог найти решение, которое делало бы именно то, что мне нужно. Мне нужен был чистый и крошечный код, поэтому я придумал следующее:

(Установите один раз в вашем master.js и вызывайте при необходимости.)

ЧИСТЫЙ 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" />


ОБНОВИТЬ

Теперь у браузера достаточно поддержки, чтобы просто использовать: toLocaleTimeString

Для типа html5time формат должен быть 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
источник
3
@ gcoleman0828 Я опоздал на вечеринку. Спасибо за голосование :)
DreamTeK
... Вы опечатали "получилось" как "установлено"? В противном случае ваш ответ не соответствует вашему заголовку и ваш заголовок не соответствует вопросу.
Иск Фонда Моники
@QPaysTaxes Мой ответ делает и то, и другое. Javascript получает время, а html показывает пользователю, как можно использовать код для установки времени, если это необходимо. Я обновил свой ответ, чтобы отразить это. спасибо, что указали на это.
DreamTeK
время для меня отстает на 30 минут, если я нажму «Установить время», оно будет правильным, но по военному времени. Установить время должно быть переключено предположение, которое не работает
Ciasto piekarz
ToLocaleTime будет иметь другой формат в зависимости от языкового стандарта браузера, вместо этого вы можете использовать фиксированный языковой стандарт без PM / AM, например fr, чтобы получить время, соответствующее формату времени html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Тофандель
25

Пытаться

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

Или

new Date().toTimeString().split(" ")[0];
Фернандо Гомеш
источник
Во второй форме, если вы используете только toString () и измените 0 на 4, вы также получите только время в формате ЧЧ: ММ: СС.
BigMac66,
9

Ты имеешь ввиду:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
Судхир Бастакоти
источник
7

Вы можете просто использовать эти методы.

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));

Омер Фарад
источник
Один из чистых ответов на вопрос
Sushin Pv
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;
}
Hamfri
источник
Если все, что вам нужно, это время без секунд, и вам не нужны части PM или AM, приведенный выше код должен работать отлично.
Hamfri
4

Вот как вы можете это сделать.

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 я ценю таинственный однострочный текст, который вы предоставили, и не стал бы прокручивать страницу достаточно далеко, чтобы увидеть краткий ответ Пармита Сингха (на который я предполагаю, вы имели в виду). Благодарность!
Джейсон Р. Стивенс 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
Вибхас Шривастава
источник
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;
mhtmalpani
источник
Зачем предполагать, что это нужно хранить в timeэлементе? OP попросил сохранить в переменной, и только для часа и минуты. 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

Это сработало для меня, но это зависит от того, что вы получите при ударе Date():

Date().slice(16,-12)
Луффи
источник
Это выглядит идентично существующему ответу: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: это не идентично. Это также сбрасывает вторую и часовой пояс.
Дэн Даскалеску
-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;
пользователь9720939
источник