2011-01-14 44 views
33

Có một vài phần cho câu hỏi này. Tôi không phản đối bằng cách sử dụng một plugin jQuery nếu có ai biết về một trong đó sẽ thực hiện những gì tôi muốn thực hiện.Cách chuyển đổi phút thành giờ/phút và thêm các giá trị thời gian khác nhau cùng với jQuery?

Q1 - Làm cách nào để chuyển đổi phút thành giờ và ngược lại? Ví dụ như làm thế nào tôi sẽ chuyển đổi 90 phút thành 1 giờ và 30 phút. Trong đoạn code dưới đây, tôi sẽ nhận được "totalMin" được chuyển đổi và hiển thị trong "conversionHour" và "conversionMin" như thế nào?

HTML:

<span class="totalMin">90</span> Minutes 

<span class="convertedHour">0</span> Hours 
<span class="convertedMin">0</span> Minutes 

jsFiddle: http://jsfiddle.net/ExFBD

Q2 - Làm thế nào tôi sẽ thêm lên một nhóm các khe thời gian? Ví dụ: Tôi sẽ thêm 1 giờ 30 phút, 2 giờ 45 phút và 2 giờ 15 phút cùng nhau?

HTML:

<span class="hour-1 hour">1</span> hour 
<span class="min-1 min">30</span> min 

<span class="hour-2 hour">2</span> hour 
<span class="min-2 min">45</span> min 

<span class="hour-3 hour">2</span> hour 
<span class="min-3 min">15</span> min 


<span class="totalHour">0</span> hour 
<span class="totalMin">0</span> min 

jsFiddle: http://jsfiddle.net/DX9YA/

Q3 - Làm thế nào tôi sẽ có được một giá trị thời gian (3 giờ và 30 phút) và thêm nó vào một tem thời gian thực như 10: 30 AM? Tôi sẽ tính AM và PM như thế nào?

+0

Cảm ơn thông tin chi tiết, Đánh dấu. Tôi rõ ràng yêu cầu giúp đỡ với mã để làm điều đó. – sevens

+5

http://www.doxdesk.com/img/updates/20091116-so-large.gif – goat

Trả lời

71

Q1:

$(document).ready(function() { 
    var hours = Math.floor($('.totalMin').html()/60);   
    var minutes = $('.totalMin').html() % 60; 


    $('.convertedHour').html(hours); 
    $('.convertedMin').html(minutes);  

}); 

Q2:

$(document).ready(function() { 

    var minutes = 0; 

    $('.min').each(function() { 
     minutes = parseInt($(this).html()) + minutes; 
    }); 

    var realmin = minutes % 60 
    var hours = Math.floor(minutes/60) 

    $('.hour').each(function() { 
     hours = parseInt($(this).html()) + hours; 
    }); 


    $('.totalHour').html(hours); 
    $('.totalMin').html(realmin);  

}); 
+0

Cảm ơn, nunoplonia. Điều này làm việc hoàn hảo. – sevens

0

Không phải là plugin jquery, nhưng DateJS Library dường như làm những gì bạn yêu cầu. Getting Started page có một số ví dụ.

+0

Cảm ơn, tôi sẽ kiểm tra. – sevens

+8

Nghiêm trọng? Nó không phải là một câu trả lời cho vấn đề! Tại sao bạn không cho thấy làm thế nào để làm với DateJS? –

5
function parseMinutes(x){hours=Math.floor(x/60); minutes=x% 60;} 
function parseHours(H,M){x=M+H*60;} 
+16

Chỉ cần đổ một vài dòng mã vào một hộp văn bản không làm cho nó là một câu trả lời. –

+0

Vui vì bạn thích nó :) –

3
var timeConvert = function(n){ 
var minutes = n%60 
var hours = (n - minutes)/60 
console.log(hours + ":" + minutes) 
} 
timeConvert(65) 

này sẽ đăng nhập 1: 5 đến giao diện điều khiển. Đó là một giải pháp ngắn và đơn giản nên dễ hiểu và không cần plugin jquery ...

14

Hàm bên dưới sẽ lấy làm số phút và thời gian đầu ra theo định dạng sau: Giờ: phút. Tôi đã sử dụng Math.trunc(), là một phương thức mới được thêm vào năm 2015. Nó trả về phần không thể tách rời của một số bằng cách loại bỏ bất kỳ chữ số thập phân nào.

function display(a){ 
    var hours = Math.trunc(a/60); 
    var minutes = a % 60; 
    console.log(hours +":"+ minutes); 
} 

display(120); //"2:0" 
display(60); //"1:0: 
display(100); //"1:40" 
display(126); //"2:6" 
display(45); //"0:45" 
+0

_ .. là một phương pháp mới được thêm vào trong 2015_ Thay vào đó ** 2015 **, ** số phiên bản ** phải rõ ràng hơn và thoải mái hơn. Cảm ơn bạn. – fWd82

+0

Có bất kỳ cách sử dụng nào cho định dạng này ở bất kỳ đâu không? Thiếu định dạng HH: MM phù hợp làm cho nó khá vô dụng. – Leonard

+1

@Leonard - Giải pháp liên quan đến câu hỏi trên. Chức năng này có thể được sử dụng để trả về giờ và bất kỳ phút còn lại nào nếu bạn được cho phút. Có rất nhiều trường hợp sử dụng khác nhưng đây không phải là nơi để liệt kê ra mỗi lượt truy cập, chỉ là trường hợp áp dụng cho câu hỏi ở trên. –

22

Trong trường hợp bạn muốn quay trở lại một chuỗi trong định dạng 00:00 ...

convertMinsToHrsMins: function (minutes) { 
    var h = Math.floor(minutes/60); 
    var m = minutes % 60; 
    h = h < 10 ? '0' + h : h; 
    m = m < 10 ? '0' + m : m; 
    return h + ':' + m; 
} 

Cảm ơn đã up-phiếu. Đây là một phiên bản ES6 hơi tidier :)

function convertMinsToHrsMins(mins) { 
    let h = Math.floor(mins/60); 
    let m = mins % 60; 
    h = h < 10 ? '0' + h : h; 
    m = m < 10 ? '0' + m : m; 
    return `${h}:${m}`; 
} 
+2

Đây là câu trả lời yêu thích của tôi, vì nó giải quyết định dạng "00:00" –

+0

Vui vì bạn thích nó :) – ConorLuddy

0

Tôi đã tự do sửa đổi câu trả lời của ConorLuddy để giải quyết cả thời gian 24 giờ và 12 giờ.

function minutesToHHMM (mins, twentyFour = false) { 
    let h = Math.floor(mins/60); 
    let m = mins % 60; 
    m = m < 10 ? '0' + m : m; 

    if (twentyFour) { 
    h = h < 10 ? '0' + h : h; 
    return `${h}:${m}`; 
    } else { 
    let a = 'am'; 
    if (h >= 12) a = 'pm'; 
    if (h > 12) h = h - 12; 
    return `${h}:${m} ${a}`; 
    } 
} 
Các vấn đề liên quan