如何使用 jQuery 模板格式化日期/时间?

Posted

技术标签:

【中文标题】如何使用 jQuery 模板格式化日期/时间?【英文标题】:How do I format Date/Time with jQuery Templates? 【发布时间】:2011-05-19 11:55:50 【问题描述】:

我刚刚开始使用jQuery Templates 作为我的javascript 模板引擎。我的问题是,我如何格式化日期(从 ASP.NET Json ActionResult 返回)格式为:

/Date(1288709830000)/

我尝试了以下操作:

= $.format(new Date(parseInt(comment.DateCreated.substr(6))), 'd') 

注意上面使用新的jquery全球化插件添加$.format方法。另请注意,= comment.DateCreated 是表示$comment.DateCreated 的长手。

如果您能提供帮助,我将不胜感激。

【问题讨论】:

你期待什么?实际发生了什么? 我不建议使用 jQuery 或 JavaScript 进行模板化,如果你问我这只是一场大灾难 - 尝试在 MVC 视图/服务器级别进行模板化。 @Erx_VB.NExT.Coder - Javascript 和 JQuery 模板是非灾难性的,微软正在帮助将这种功能开发到 JQuery 的核心中。客户端模板非常适合带宽敏感的移动开发,当您使用 API 时,尤其是当您与外部设计师合作时。 @jfar:当它调用tmpl插件内部的buildTmplFn函数时,它会抛出错误“无效字符”。 @Erx:如果你能解释为什么你会有这种感觉,你的评论会更有建设性。 【参考方案1】:

要在 jQuery 模板中格式化日期时间,您可以编写如下函数:

function formatDate(datetime) 
    var dateObj = new Date(datetime);
    var dateStr = (dateObj.getMonth()+1) + "/" + dateObj.getDate() + "/" + dateObj.getFullYear();
    return dateStr; // will return mm/dd/yyyy

然后您可以从 jQuery 模板中调用此函数,如下所示:$formatDate(comment.DateCreated)

更多详情见:http://api.jquery.com/template-tag-equal

【讨论】:

【参考方案2】:

这是我用的

var formatDate = function (datetime) 
    var dateObj = new Date(parseInt(datetime.replace("/Date(", "").replace(")/", ""), 10));
    return dateObj.format("dd-MMM-yyyy"); //01-Jun-2001

这在我的 JQuery 模板中

$formatDate(InceptionDate)

【讨论】:

【参考方案3】:

这确实有效。我使用的是 Microsoft CDN 上托管的测试版。如果您下载最新版本,一切都会按预期运行。

【讨论】:

这一行:= $.format(new Date(parseInt(comment.DateCreated.substr(6))), 'd')。希望对您有所帮助。【参考方案4】:

我想出了一个非常老套的解决方案。如果在页面中添加如下函数:

function format(o, t) 
    return $.format(o, t);

然后您可以将表达式更改为:

= format(new Date(parseInt(comment.DateCreated.substr(6))), 'd') 

而且效果很好。微软创建的两个插件会以这种方式发生冲突,这似乎很奇怪。

【讨论】:

以上是关于如何使用 jQuery 模板格式化日期/时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery datetimepicker 中格式化日期?

如何在 PHP 中使用 jquery 验证 'dd/mm/yyyy HH:ii P' 格式的日期时间?

如何使用 Vapor 4 在 Leaf 模板中格式化日期字段

如何使用jquery将日期格式从格式转换为其他格式

模板中的全局时间日期格式

如何根据浏览器文化格式化 JavaScript 日期?