Javascript格式化日期

时间:2010-12-21 20:18:45

标签: javascript jquery json

如何格式化:

/Date(1292962456255)/

作为JavaScript / jQuery中的常规日期?

4 个答案:

答案 0 :(得分:4)

这就是我所谓的“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;
            }

答案 1 :(得分:2)

查看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。我认为这两个库相互补充。

答案 2 :(得分:1)

该数字是一个毫秒级分辨率的时间戳。这个数字可以传递给JavaScript的Date类'构造函数。所需要的只是从字符串中提取它的一些代码:

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攻击,所以我不推荐它。

答案 3 :(得分:-2)

我认为这是microtime。与PHP's microtime功能类似。或者在JavaScript中new Date().getTime()

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

// JavaScript
new Date().getTime()
1292963411830