在javascript或jQuery中将RFC 3339日期转换为dd-M-yyyy?

时间:2014-05-11 17:27:32

标签: javascript jquery date

我有一个大表从solr返回数据,我无法做任何服务器端,所以我需要使用客户端javascript和发出的日期格式是:

yyyy-mm-ddThh:mm:ssZ

可爱。我希望它显示为:

dd-M-yyyy (or 21-Jan-2011, for example)

每个日期都在一个带有“formatdate”类的td中。我认为这样的(下面)会起作用,坐在

$(document).ready(function()

并自动格式化所有内容,但没有这样的运气;

$('.formatdate').each(function() {
var date = document.getElementByClassName('formatdate');
$(".formatdate").innerHTML = new Date(date);
});

有什么想法吗?

编辑:另一方面是插入此

"mRender": function(date, type, full) { return new Date(date).toDateString(); }

进入datatables返回“2012年11月2日星期五”,但后来我没有格式化选项 - 它真的必须是“02-Nov-2012”...再次感谢!

2 个答案:

答案 0 :(得分:0)

你的意思是这样吗? Fiddle

$(".formatdate").each(function () {
    var $this = $(this),
        date = $this.html();
    $this.html(new Date(date));
});

答案 1 :(得分:0)

问题在于你基本上是这样说的:

  • 每个.formatdate ......
    • 获取.formatdate元素
    • 的集合
    • 从中创建日期(???)
    • 将该日期放在所有.formatdate元素中。

毋庸置疑,这不是你的意图!

试试这个:

var months = "JanFebMarAprMayJunJulAugSepOctNovDec";
$(".formatdate").each(function() {
    var dateparts = this.firstChild.nodeValue.match(/(\d{4})-(\d\d)-(\d\d)/);

    this.firstChild.nodeValue =
       dateparts[2] + "-"
       + months.substr((dateparts[1]-1)*3,3) + "-"
       + dateparts[0];
});