2012-12-06 35 views
9

Tôi muốn chuyển đổi các ngày sau bằng cách sử dụng Javascripy/jQuery. Nghiên cứu của tôi dường như trỏ đến moment.js trông thật tuyệt vời nhưng dường như tôi không thể làm nổi bật nó. (JS bán Noob)Sử dụng moment.js để chuyển đổi định dạng ngày

<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 

Ngoài ra nó sẽ là tuyệt vời nếu cùng một logic có thể áp dụng một lớp bổ sung cho các div nếu ngày là trong vòng 24 giờ qua, vì vậy tôi có thể tạo kiểu những một chút khác nhau. Có thể có ngày trong vòng 24 giờ qua thêm một lớp và thay vì hiển thị ngày "mới".

Cảm ơn!

Trả lời

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/

Về phần 2, hãy thử sử dụng new Date().getTime() - textMoment.valueOf() (nơi textMoment là ví dụ thời điểm phân tích cú pháp được tạo ra từ văn bản của div) để có được số mili giây trước ngày đó đã và nếu con số đó là của bạn dưới đây ngưỡng, sử dụng $dateElem.addClass('new');

+0

Tuyệt vời. Có cách nào để thêm lớp vào div và văn bản "mới" thay vì hiển thị ngày nếu ngày trong vòng 24 giờ qua không? Việc định dạng lại bị rung chuyển. (IT là phần sau của câu hỏi của tôi theo đoạn mã trên.) –

+0

Để thêm một lớp, hãy thử '.addClass()'. Bạn có thể tìm thấy việc sử dụng propper của nó ở đây: http://api.jquery.com/addclass/. Nếu điều này giúp bạn không quên upvote! ;) Nguoi ban doi may man! – SrAxi

+0

Làm tốt lắm! Upvote :) – Stu

Các vấn đề liên quan