Tuesday, 12 July 2011

parseDate

Функция преобразует дату, заданную строкой, в количество миллисекунд относительно базового времени, и возвращает его. Строка должна содержать дату и время в определенном формате. Функция аналогична стандартному методу Date.parse. Отличие заключается в том, что корректно обрабатывает строки, содержащие миллисекунды.
function parseDate(v, matcher)
{
    var m = (matcher || arguments.callee.matcher)(v) || [v, 0];
    return Date.parse(m[0]) + (+m[1]);
    //return Date.parse(m[0]) + parseInt(m[1], 10);
};

parseDate.matcher = function(v)
{
    var m = v.match(/^(.+)\.(\d{3})$/);
    m && m.shift();
    return m;
};
Примеры:
var s = '21 May 1958 10:12:01';

var s1 = Date.parse(s); // -366572879000
var s2 = parseDate(s);  // -366572879000

var t = '21 May 1958 10:12:01.000';

var t1 = Date.parse(t); // NaN
var t2 = parseDate(t);  // -366572879000
По умолчанию функция рассматривает входную строку, задающую время в формате, когда миллисекунды указаны в конце строки, после секунд и отделены от них символом точка. Если дата задается в другом формате, можно передать вторым параметром либо переопределить parseDate.matcher собственную функцию-замыкание, которая преобразует входную строку в массив, где первый элемент - дата в обычном формате, а второй элемент - миллисекунды.

Функция может оказаться полезной при разборе текстовых логфайлов некоторых многопоточных процессов где требуется просмотреть временные интервалы между различными событиями с учетом заданных миллисекунд.

Функция названа по аналогии со встроенными parseInt и parseFloat.

No comments:

Post a Comment