如何使用Javascript格式化日期字符串。例如:
var date_str = "2010-10-06T03:39:41+0000";
结果应该是这样的:
11:39 AM Oct 6th
对此有什么想法吗?注意:date_str是从Facebook Graph API返回日期的示例。
提前致谢。
答案 0 :(得分:2)
解析日期应该不会太困难 - 所有组件的顺序都是正确的,所以你只需要拆分特殊字符,从月份值中减去1,然后将数组减去最后一个元素。 EM> Date.UTC():
function parseDate(dStr) {
var d = dStr.split(/[-:T+]/); d[1] -= 1; d.pop();
var date = new Date(Date.UTC.apply(Date, d));
这为我们提供了指定日期的 Date 对象,其余的只是将每个组件格式化为字符串:
// Declare an array of short month names
var mon = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov", "Dec"];
// Determine between AM and PM
ampm = date.getHours() > 12 ? "PM" : "AM",
// Prepare for working out the date suffix
nth = date.getDate();
// Date is nth for 11th, 12th and 13th
if (nth >= 11 && nth <= 13)
nth = "th";
// Otherwise it's st, nd, rd, th if the date ends in 1, 2, 3 or anything else
else
nth = ["", "st", "nd", "rd"][(nth+"").slice(-1)] || "th";
// Return the string formatted date
return (date.getHours() % 12) + ":" + (date.getMinutes()) + " " + ampm +
" " + mon[date.getMonth()] + " " + date.getDate() + nth;
}
// Example:
parseDate("2010-10-06T03:39:41+0000");
// -> "4:39 AM Oct 6th" (in my timezone)
如果您希望输出相同而不管时区(提供的原始时间),您需要交换方法 getHours(), getMinutes(),等等 getUTCHours(), getUTCMinutes()等。
答案 1 :(得分:0)
使用phpjs.org中的此功能:http://phpjs.org/functions/date:380
答案 2 :(得分:0)
如果剥离+0000部分,Date.parse可以解析此问题。然后,您可以在Date对象上使用setTime,您可以自己打印,也可以使用某些库。