Javascript格式化日期

如何格式化:

/Date(1292962456255)/ 

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

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

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

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

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

第二行的正则表达式有点乱,因为字符串包含/,(和)恰好在regexp中需要它们的位置(你确定你拥有的是看起来那样的字符串,而不是a的描述)提取它们的模式?)。

另一种方法是使用eval

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

但这可能会导致XSS攻击,所以我不推荐它。

我认为这是一个microtime 。 与PHP的microtimefunction类似。 或者在JavaScript中使用new Date().getTime()

 // PHP $ php -r "var_dump(microtime(true));" float(1292963152.1249) // JavaScript new Date().getTime() 1292963411830