Tôi có bộ đếm thời gian còn lại để tải lên tệp. Thời lượng còn lại được tính toán và chuyển đổi thành mili giây như sau:Làm cách nào để nhân bản thời lượng hoàn chỉnh này trong moment.js/javascript
var elapsedTime = e.timeStamp - timestarted;
var speed = e.loaded/elapsedTime;
var estimatedTotalTime = e.totalSize/speed;
var timeLeftInSeconds = (estimatedTotalTime - elapsedTime)/1000;
Sau đó, tôi tạo một mảng mà tôi dự định xây dựng thành chuỗi nhân bản. Các mảng như sau:
var time = {
years : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').years()),
months : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').months()),
days : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').days()),
hours : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').hours()),
minutes : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').minutes()),
seconds : Math.round(moment.duration(timeLeftInSeconds, 'milliseconds').seconds())
};
này tất cả các công trình một cách hoàn hảo và nếu tôi đầu ra một chuỗi đại diện của dữ liệu này như sau:
console.log(time.years + ' years, ' + time.months + ' months, ' + time.days + ' days, ' + time.hours + ' hours, '+ time.minutes + ' minutes, ' + time.seconds + ' seconds');
tôi nó trả về một dòng đơn giản tốt đẹp của thời gian còn lại như sau:
0 years, 0 months, 0 days, 0 hours, 1 minutes, 7 seconds
Điều tôi cần làm là nhân bản đầu ra này để chuỗi được xây dựng tùy thuộc vào thời gian còn lại. ví dụ
- 2 năm và 3 tháng còn lại
- 1 giờ, 32 phút và 41 giây còn lại
- 7 giây còn lại
- 3 phút 46 giây còn lại
- 6 giây còn lại
etc ... etc ...
Bây giờ tôi biết rằng mo ment.js có khả năng tự động nhân bản thời lượng hoạt động tốt cho các giá trị đơn lẻ nhưng điều này có thể có nhiều giá trị có thể (giờ/phút/giây, v.v.)
Làm cách nào để chuyển dữ liệu này bằng moment.js hoặc bằng xây dựng chuỗi bằng tay?
Xin cảm ơn trước.
Cảm ơn Cerberus, tôi nghĩ làm một cái gì đó tương tự (mặc dù trong một vòng lặp qua mảng) nhưng nếu thời gian là lớn ví dụ 2 năm tôi muốn chỉ trở lại những năm, nhưng đối với thời lượng nhỏ hơn tôi muốn trở lại một số (3 phút và 42 giây). Tôi đã hy vọng moment.js đã xử lý điều này nhưng tôi đoán là không. – gordyr
Hoàn hảo! Rất cám ơn sự giúp đỡ của bạn! – gordyr
@gordyr: Không có vấn đề gì cả: D – Cerbrus