2010-12-03 20 views
11

Je viens de commencer à utiliser jQuery Templates comme moteur de template JavaScript. Ma question est, comment puis-je formater une date (retour d'un ASP.NET Json ActionResult) sous la forme:Comment mettre en forme la date et l'heure avec les modèles jQuery?

/Date(1288709830000)/ 

J'ai essayé de faire ce qui suit:

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

Notez les utilisations au-dessus du nouveau jquery plugin de globalisation pour ajouter la méthode $.format. Notez également que {{= comment.DateCreated }} est long main pour dire ${comment.DateCreated}.

J'apprécierais vraiment si vous pouviez aider.

+0

Qu'est-ce que vous attendez-vous? Qu'est-ce qui se passe réellement? – jfar

+0

Je ne recommanderais pas d'utiliser jQuery ou JavaScript pour la création de modèles, c'est juste un gros désastre si vous me demandez - essayez de faire votre template au niveau MVC view/server. –

+7

@ Erx_VB.NExT.Coder - Javascript et le template JQuery sont un tel NON catastrophe que Microsoft contribue à développer ce type de fonctionnalité dans le CORE de JQuery. La modélisation côté client est géniale pour le développement mobile sensible à la bande passante, lorsque vous travaillez avec une API, et surtout lorsque vous travaillez avec un concepteur externe. – jfar

Répondre

2

Cela fonctionne réellement. J'utilisais la version bêta hébergée sur Microsoft CDN. Si vous téléchargez la dernière version, tout fonctionne comme prévu.

+0

Qu'est-ce qui "fonctionne réellement"? – Homer

+1

Cette ligne: {{= $ .format (new Date (parseInt (comment.DateCreated.substr (6))), 'd')}}. J'espère que cela aide. – nfplee

1

Je suis venu avec une solution très hacky. Si vous ajoutez la fonction suivante à la page:

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

Vous pouvez ensuite modifier l'expression:

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

Et cela fonctionne très bien. Cela semble étrange que deux plugins créés par Microsoft soient en conflit de cette manière.

0

Pour formater un datetime dans un modèle jQuery vous pouvez écrire une fonction comme:

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

Vous pouvez ensuite appeler cette fonction à partir de votre modèle jQuery comme ceci: ${formatDate(comment.DateCreated)}

Pour plus de détails: http://api.jquery.com/template-tag-equal

3

C'est ce que je

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

Et dans mes JQuery Modèle

$ {formatDate (InceptionDate)}