2013-10-13 1 views
13

Как я могу получить этот hh: mm: ss из объекта даты?jquery: Как получить hh: mm: ss из объекта даты?

var d = new Date(); // for now 
datetext = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); 

Я получаю этот результат ниже иногда

12:10:1 

, который должен быть

12:10:01 

Я предполагаю, что это произойдет в час и минуту, а также.

Так я после этого

01:01:01 

Не это 1: 1: 1

+1

Как насчет того, будет ли каждое значение меньше 10 и добавит нуль? – Pointy

+0

да, вы правы - хорошее мышление! – laukok

+2

Посмотрите здесь: http://stackoverflow.com/questions/5914020/javascript-date-to-string – rd3n

ответ

27

Решение - (Tl; др версия)

datetext = d.toTimeString().split(' ')[0]

Объяснение:

toTimeString возвращает полное время. Мы разделим его по пространству, чтобы получить только компонент времени, а затем возьмем первое значение, которое будет полезно. :)

Полный поток:

d = new Date(); 
// d is "Sun Oct 13 2013 20:32:01 GMT+0530 (India Standard Time)" 
datetext = d.toTimeString(); 
// datestring is "20:32:01 GMT+0530 (India Standard Time)" 
// Split with ' ' and we get: ["20:32:01", "GMT+0530", "(India", "Standard", "Time)"] 
// Take the first value from array :) 
datetext = datetext.split(' ')[0]; 

Примечание: Это не требует, чтобы включить любые внешние файлы или библиотеки, следовательно, время, необходимые для выполнения будет быстрее.

+0

Действительно красивое однолинейное решение :) Хорошо. – maddy

5

Я предлагаю вам проверить библиотеку времени и времени. Moment.js - один хороший пример.

Вы могли бы сделать просто, как показано ниже

var d = new Date(); 
var formatteddatestr = moment(d).format('hh:mm:ss a'); 

Вот example from fiddle

+0

Эта скрипка дала мне «04:07:37 вечера» вместо «16:07:37», запрошенной в вопросе. – user3070485

+0

Предлагаю вам ознакомиться с документацией. Конечно, вы можете манипулировать так, как хотите, если вы измените форматтер. –

10

Вы можете использовать этот код. Я также добавил его к jsfiddle и добавил более безопасные комментарии, поэтому не забудьте проверить скрипку.

Если вы используете jQuery, назовите его в своей готовой функции. В противном случае вы можете использовать обычный JavaScript для обновления значения вашего поля.

$(document).ready(function(){ 
    var d = new Date(); 
    var formatted_time = time_format(d); 
    $('#yourTimeField').text(formatted_time); 
}); 

Добавьте эти два метода в сценарий (вы также можете вставить его в один файл, как это в jsfiddle фрагменте кода):

function time_format(d) { 
    hours = format_two_digits(d.getHours()); 
    minutes = format_two_digits(d.getMinutes()); 
    seconds = format_two_digits(d.getSeconds()); 
    return hours + ":" + minutes + ":" + seconds; 
} 

function format_two_digits(n) { 
    return n < 10 ? '0' + n : n; 
} 

Вот это :) Надеюсь, что это помогает:)

+1

Я предпочитаю этот ответ, а не принятый, потому что здесь вы используете настоящие часы, минуты и секунды вместо «слепой обрезки» строки. –

1

Вы также можете попробовать использовать http://momentjs.com/. Библиотека дат javascript для парсинга, проверки, управления и форматирования дат.

 Смежные вопросы

  • Нет связанных вопросов^_^