在 javascript 中获取准确时间

get exact time in javascript

如何获得javascript的准确时间?例如,当你执行你会得到的代码时(2016-02-11 03:11:22:33)。

注意: 教程那么多,但是其中 none 给了你当前时间的毫秒

这个 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 200ms),我会得到一个具有以下属性的对象:

{
    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 200ms),我会得到这个字符串:

20:52:49:200

另见 this Fiddle

扩展 John 的想法,您可以在 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; }