2012-08-26 53 views
7

Tôi đang sử dụng Moment.js và muốn chuyển đổi dấu thời gian unix thành (luôn luôn) hiển thị phút trước từ thời điểm hiện tại. Ví dụ: 4 phút trước, 30 phút trước, 94 phút trước, v.v.Dấu thời gian tạm thời của Moment.js để hiển thị thời gian trước luôn trong phút

Ngay bây giờ tôi đang sử dụng:

moment.unix(d).fromNow() 

Nhưng điều này không phải lúc nào cũng hiển thị trong vài phút ví dụ) một giờ trước, một ngày trước, vv. Tôi đã thử sử dụng .asMinutes() nhưng tôi tin rằng chỉ những từ này với moment.duration().

Trả lời

4

Không chắc nếu điều này là có thể với phương pháp Moment bản xứ, nhưng bạn có thể dễ dàng thực hiện mở rộng Moment của riêng bạn:

moment.fn.minutesFromNow = function() { 
    return Math.floor((+new Date() - (+this))/60000) + ' mins ago'; 
} 
//then call: 
moment.unix(d).minutesFromNow(); 

Fiddle

Lưu ý rằng phương pháp thời điểm khác sẽ không thể kết nối sau minutesFromNow() như tiện ích của tôi trả về một chuỗi.

chỉnh sửa:

mở rộng với số nhiều cố định (0 phút s, 1 phút, 2 phút s):

moment.fn.minutesFromNow = function() { 
    var r = Math.floor((+new Date() - (+this))/60000); 
    return r + ' min' + ((r===1) ? '' : 's') + ' ago'; 
} 

Bạn cũng có thể thay thế "min" với " phút "nếu bạn thích biểu mẫu dài.

Fiddle

+0

Tuyệt vời, nó chỉ là những gì tôi muốn và nó hoạt động tuyệt vời! Cảm ơn! –

+0

đẹp .. nhưng ... Làm thế nào để tôi mang dấu thời gian trong tương lai? Điều này trả về cho tôi số phút âm –

2

Chỉ việc điều chỉnh "tìm" hàm trong mã moment.js, do đó nó sẽ trả về phút:

from : function (time, withoutSuffix) { 

    return moment.duration(this.diff(time)).asMinutes(); 

} 

Dưới đây là một example.

... hoặc, thậm chí tốt hơn. Chỉ cần thêm chức năng này dưới dạng một hàm mới có tên "fromNowInMinutes".

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