2016-02-10 7 views
-1

Как получить точное время в javascript? Например, когда вы выполняете код, который вы получаете (2016-02-11 03: 11: 22: 33).получить точное время в javascript

Примечание: Существует так много учебник, но ни один из них не дает вам миллисекунды текущего времени.

+1

'новый Date()' <- делает это, в миллисекундах. – adeneo

+0

Или вы пытаетесь получить этот точный формат в виде строки? – adeneo

+1

Возможно, вы можете просто добавить миллисекунды в конец предпочитаемого формата даты? 'new Date(). getMilliseconds()' даст вам ms. – IrkenInvader

ответ

2

Этот function должен это сделать:

function getTime(input) { 
    var date = input ? new Date(input) : new Date(); 
    return { 
     hours : date.getHours(), 
     minutes : date.getMinutes(), 
     seconds : date.getSeconds(), 
     milliseconds : date.getMilliseconds() 
    } 
} 

Если бы я работать getTime() прямо сейчас (20:52:49 200мс), я хотел бы получить объект со следующими свойствами:

{ 
    hours: 20, 
    minutes: 52, 
    seconds: 49, 
    milliseconds: 200 
} 

Если вы предпочитаете, чтобы ваш вывод был строкой вместо объекта, вы также можете использовать эту функцию:

var getTimeString = function(input, separator) { 
    var pad = function(input) {return input < 10 ? "0" + input : input;}; 
    var date = input ? new Date(input) : new Date(); 
    return [ 
     pad(date.getHours()), 
     pad(date.getMinutes()), 
     pad(date.getSeconds()), 
     date.getMilliseconds() 
    ].join(typeof separator !== 'undefined' ? separator : ':'); 
} 

Если бы я работать getTimeString() прямо сейчас (20:52:49 200мс), я хотел бы получить эту строку:

20:52:49:200 

Смотрите также this Fiddle.

1

Расширение идеи Джона, вы можете добавить параметры конфигурации в свою getTime функцию, такую ​​как время 24 часа и если это UTC.

var now = new Date(); 
 
document.body.innerHTML = 'Local: ' + format(getTime(now, true, false)) + '\n'; 
 
document.body.innerHTML += 'UTC: ' + format(getTime(now, true, true)); 
 

 
/** 
 
* Returns an object with time information for a given Date object.<p> 
 
* @param date {Date} A date object used to retrieve information. 
 
* @return Returns an object containg hours, minutes, seconds, 
 
*   and milliseconds for the supplied date. 
 
*/ 
 
function getTime(date, is24Hour, isUTC) { 
 
    var hour = isUTC ? date.getUTCHours() : date.getHours(); 
 
    var meridiem = hour < 12 ? 'AM' : 'PM'; 
 
    hour = is24Hour ? hour % 12 : hour; 
 
    hour = hour === 0 ? 12 : hour; 
 
    var data = { 
 
    hours  : hour, 
 
    minutes  : isUTC ? date.getUTCMinutes()  : date.getMinutes(), 
 
    seconds  : isUTC ? date.getUTCSeconds()  : date.getSeconds(), 
 
    milliseconds : isUTC ? date.getUTCMilliseconds() : date.getMilliseconds(), 
 
    is24Hour  : is24Hour, 
 
    isUTC  : isUTC 
 
    }; 
 
    if (is24Hour) { 
 
    data.meridiem = meridiem; 
 
    } 
 
    return data; 
 
} 
 

 
function format(time) { 
 
    function pad(val, str) { return ('' + str + val).substr(-str.length); } 
 
    return pad(time.hours, '00')   + ':' + 
 
     pad(time.minutes, '00')  + ':' + 
 
     pad(time.seconds, '00')  + '.' + 
 
     pad(time.milliseconds, '000') + ' ' + 
 
     time.meridiem || ''; 
 
}
body { white-space: pre; font-family: monospace; }