Формат даты в Javascript - PullRequest
       6

Формат даты в Javascript

4 голосов
/ 21 декабря 2010

Как отформатировать это:

/Date(1292962456255)/

как обычную дату в JavaScript / jQuery?

Ответы [ 4 ]

4 голосов
/ 21 декабря 2010

Это то, что я называю «Microsoft Date», и следующая функция преобразует закодированную дату в время даты javascript

            var msDateToJSDate = function(msDate) {
                var dtE = /^\/Date\((-?[0-9]+)\)\/$/.exec(msDate);
                if (dtE) {
                    var dt = new Date(parseInt(dtE[1], 10));
                    return dt;
                }
                return null;
            }
2 голосов
/ 11 апреля 2012

Проверьте moment.js ! Это «Легкая библиотека дат на JavaScript для анализа, манипулирования и форматирования дат». Это действительно мощная маленькая библиотека.

Вот пример ...

var today = moment(new Date());
today.format("MMMM D, YYYY h:m A");        // outputs "April 11, 2012 2:32 PM"

// in one line...
moment().format("MMMM D, YYYY h:m A");     // outputs "April 11, 2012 2:32 PM"

Вот еще один пример ...

var a = moment([2012, 2, 12, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Monday, March 12th 2012, 3:25:50 pm"
a.format("ddd, hA");                       // "Mon, 3PM"
a.format("D/M/YYYY");                      // "12/3/2012"

Также стоит упомянуть о оформлении заказа date.js . Я думаю, что две библиотеки дополняют друг друга.

1 голос
/ 21 декабря 2010

Число представляет собой метку времени с разрешением в миллисекундах.Это число может быть передано в конструктор JavaScript Date class '.Все, что нужно, это какой-то код для извлечения его из строки:

var dateString = "/Date(1292962456255)/";
var matches = dateString.match(/^\/Date\((\d+)\)\/$/);
var date = new Date(parseInt(matches[1], 10));

Регулярное выражение во второй строке становится немного запутанным, поскольку строка содержит /, (и) именно в тех местах, где они необходимыв регулярном выражении (вы уверены, что у вас есть строки, которые выглядят так, а не описание шаблона, который их извлечет?).

Другой способ сделать это - использовать eval:

var dateString = "/Date(1292962456255)/";
var date = eval("new " + dateString.substring(1, dateString.length - 1));

но это может открыть для атаки XSS, поэтому я не рекомендую это.

0 голосов
/ 21 декабря 2010

Я думаю, что это microtime.Похоже на функцию PHP microtime .Или в new Date().getTime() в JavaScript.

// PHP
$ php -r "var_dump(microtime(true));"
float(1292963152.1249)

// JavaScript
new Date().getTime()
1292963411830
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...