2012-12-06 3 views
9

Ich möchte die folgenden Daten mit Javascripy/jQuery konvertieren. Meine Forschung scheint auf moment.js hinzuweisen, was großartig aussieht, aber ich kann es nicht scheinen. (JS semi-Noob)Verwenden Sie moment.js, um das Datumsformat zu konvertieren

<div class="date">01-06-2012</div> convert to display January 6 
<div class="date">05-14-2012</div> convert to display May 14 
<div class="date">06-16-2012</div> to display June 16 

Auch wäre es fantastisch, wenn die gleiche Logik eine zusätzliche Klasse an den div anwenden kann, wenn das Datum innerhalb der letzten 24 Stunden, so kann ich anders diejenigen, die ein bisschen Stil. Vielleicht haben die Termine innerhalb der letzten 24 Stunden eine Klasse hinzugefügt und statt einer Datumsanzeige "neu" angezeigt.

Danke!

Antwort

23
$(function() { 
    $('.date').each(function (index, dateElem) { 
    var $dateElem = $(dateElem); 
    var formatted = moment($dateElem.text(), 'MM-DD-YYYY').format('MMMM D'); 
    $dateElem.text(formatted); 
    }) 
});​ 

http://jsfiddle.net/x2fDP/

Für Teil 2, versuchen new Date().getTime() - textMoment.valueOf() mit (wo textMoment wird die analysierte Moment Instanz aus dem div Text erstellt), um die Anzahl von Millisekunden zu erhalten vor diesem Datum war und wenn diese Zahl unter Ihrem Schwelle, verwenden Sie $dateElem.addClass('new');

+0

Ehrfürchtig. Gibt es eine Möglichkeit, die Klasse zum div hinzuzufügen und Text "neu" anstatt das Datum anzuzeigen, wenn das Datum innerhalb der letzten 24 Stunden ist? Die Neuformatierung erschütterte. (IT ist der letzte Teil meiner Frage unter dem obigen Code.) –

+0

Um eine Klasse hinzuzufügen, versuchen Sie '.addClass()'. Sie finden den richtigen Gebrauch davon hier: http://api.jquery.com/addclass/. Wenn das half, vergessen Sie nicht zu upvote! ;) Viel Glück, Junge! – SrAxi

+0

Gute Arbeit! Upvote :) – Stu