2012-12-06 10 views
9

Chciałbym przekonwertować następujące daty za pomocą JavaScriptcripy/jQuery. Moje badania wydają się wskazywać na moment.js, który wygląda niesamowicie, ale nie mogę go do tego przyzwyczaić. (JS semi-noobem)Użyj pliku moment.js do przekonwertowania formatu daty

<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 

Również byłoby niesamowite, jeśli ta sama logika może zastosować dodatkową klasę div jeżeli data jest w ciągu ostatnich 24 godzin, więc mogę styl tych trochę inaczej. Być może daty w ciągu ostatnich 24 godzin dodają klasy, a zamiast daty wyświetlają się "nowe".

Dzięki!

Odpowiedz

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/

Dla części 2, spróbuj użyć new Date().getTime() - textMoment.valueOf() (gdzie textMoment jest analizowany chwila stworzona z tekstem div na przykład), aby uzyskać liczbę milisekund temu, że data była i jeśli ta liczba jest niższa TWOJEJ próg, użyj $dateElem.addClass('new');

+0

Niesamowite. Czy jest jakiś sposób dodania klasy do div i tekstu "new" zamiast wyświetlania daty, jeśli data jest w ciągu ostatnich 24 godzin? Przeformatowanie kołysało. (To jest druga część mojego pytania pod powyższym kodem.) –

+0

Aby dodać klasę, wypróbuj '.addClass()'. Możesz znaleźć zastosowanie propper tutaj: http://api.jquery.com/addclass/. Jeśli to pomogło, nie zapomnij o przegłosowaniu! ;) Powodzenia, kolego! – SrAxi

+0

Dobra robota! Awans :) – Stu