我正在尝试以格式“MMM.dd HH:mm:ss.nnn”显示日期。它在IE中渲染不正确,我花了很长时间,我无法弄清楚为什么我不能让它工作。
我知道Date.UTC返回自1970年1月1日以来Date对象中的毫秒数。所以,
var newDate = new Date(Date.UTC(year, month[, date[, hrs[, min[, sec[, ms]]]]])
newDate.toString("MMM. dd HH:mm:ss.")+row.timestamp.getMilliseconds();
会奏效。
示例:
var newDate = new Date(Date.UTC(1950, 10, 10, 10, 09, 09, 100));
row.timestamp_f = newDate.toString("MMM. dd HH:mm:ss."); // Output => Nov. 10 05:09:09.
但是,我正在使用jquey.each函数进行交互,因此我使用的日期字符串是ISO 8601:“2013-03-12T15:14:10.483”。所以,这就是我的想法。
var numMilisecond = Date.parse(row.timestamp);
var newDate = new Date(numMilisecond);
row.timestamp_f = newDate.toString("MMM. dd HH:mm:ss."); // Output => Dec. 31 19:00:00.
row.timestamp来自JSON响应
{"timestamp":"2013-03-12T15:14:10.483" ...}
为什么代码不起作用? Date.parse应返回自1970年1月1日以来的毫秒数,然后我创建一个新的Date obj然后将其转换为字符串,就像第一个snipet中的代码一样。我做错了什么?
感谢。
答案 0 :(得分:0)
Date.toString
shouldn't accept any arguments。如果您想要一个真正的日期格式化解决方案,您需要使用plugin或自己动手。
var shortmonths = ['Jan','Feb','Mar','Apr',]; // remaining months are left as an exercise for the reader
row.timestamp_f = shortmonths[newDate.getMonth()]
+ ". "+newDate.getDate() + " "
+ newDate.toLocaleTimeString() + ".";