2011-07-09 40 views
9

Tôi có đối tượng ngày được tạo từ các vars được lưu trong cơ sở dữ liệu.Tôi cần tính thời gian đã trôi qua giữa hai đối tượng ngày

var prevTime = Date(year,month,day,hour,minute); 

Tôi muốn tính chênh lệch giữa thời gian này và thời điểm hiện tại.

var thisTime = Date(); 

tôi đang làm điều này:

prevTime.getTime() - thisTime.getTime(); 

Nó mang lại cho tôi một số âm đó là rất lớn. Tôi chia cho 1000 để nhận giây và sau đó chia cho 3600 để nhận giờ. Tôi cần một thời gian trôi qua trong nhiều giờ. Tôi kết thúc bằng một con số giống như -756.00. Nếu thời gian hiện tại lớn hơn thời gian trước, tại sao số lượng âm? Tôi đang làm gì sai?

Cảm ơn,

Scott

+5

Bởi vì bạn đang trừ thời điểm hiện tại từ thời gian trước đó. Bạn phải trừ số tiền thắng. thời gian từ thời điểm hiện tại: 'thisTime - prevTime'. –

+1

có thể trùng lặp của [Làm thế nào để trừ ngày/giờ trong javascript?] (Http://stackoverflow.com/questions/4944750/how-to-subtract-date-time-in-javascript) –

Trả lời

11

Thời gian hiện tại là lớn hơn so với thời gian trước đó để trừ đi một số lượng lớn từ một số nhỏ hơn cung cấp cho bạn một số âm. Đảo ngược thứ tự nếu bạn muốn sự khác biệt tích cực trong thời gian. Có nhiều câu hỏi hơn thế không?

trình diễn ở đây: http://jsfiddle.net/jfriend00/NYSsp/

var prevTime = new Date(2011,1,1,0,0); // Feb 1, 2011 
var thisTime = new Date();    // now 
var diff = thisTime.getTime() - prevTime.getTime(); // now - Feb 1 
alert(diff/(1000*60*60*24));  // positive number of days 
+0

Có. Tôi xin lỗi. Tôi đã rất lo lắng khi tôi gõ câu hỏi. Tôi đang làm thisTime.getTime() - prevTime.getTime(); Khi tôi gỡ lỗi hoặc xuất ra bàn điều khiển, tôi thấy ngày hiện tại lớn hơn ngày trước đó. Tôi vẫn dường như nhận được số âm là quá lớn. Có suy nghĩ gì không? – llihttocs

+0

Nhìn vào fiddle của tôi cho một ví dụ làm việc. Loại mã này cần phải là: var prevTime = new Date (năm, tháng, ngày, giờ, phút); với "mới" trong đó nếu bạn muốn có thể gọi các phương thức getTime(). – jfriend00

+0

Sau khi gỡ lỗi nhiều hơn, vấn đề dường như đến từ cách tôi tạo đối tượng ngày trước đó. Đây là đoạn mã: – llihttocs

0

Đầu tiên phải nhỏ mà bạn có được tiêu cực. Ngày đầu tiên của bạn là trong quá khứ.

Dưới đây là một ví dụ:

var a = new Date(2011,7,5,2,1,1) - new Date(2011,7,5,1,1,1); 
alert(a); // 3600000 which is millisecond for 1 hour. Divide by this to get hours. 
+0

Cảm ơn ví dụ của bạn. Tôi đã tìm thấy vấn đề. Tôi mô tả nó ở trên. – llihttocs

-1

Kiểm tra này:

var first = new Date(); 
for(i = 0; i<10000; i++) // Some loop to make a little time pass 
{ 
    i = i; 
} 
var second = new Date(); 

second.getTime() - first.getTime(); 
+0

Cảm ơn bạn đã cho ví dụ của bạn. Như tôi đã đề cập ở trên, tôi đã tìm thấy vấn đề. – llihttocs

+0

Không bao giờ chặn. Thay vào đó, hãy sử dụng [Timer] (https://www.w3.org/TR/2011/WD-html5-20110525/timers.html) – Pho3nixHun

0

NẾU bạn muốn Date and Time trong động Chạy trên web Page và cũng là lần đăng nhập tức là đồng hồ bắt đầu từ bắt đầu của hàm scipt java và cũng cung cấp cho bao nhiêu giờ, phút và giây bạn đang trực tuyến trong ứng dụng hoặc một trang web cụ thể cho điều này chỉ cần gọi hàm javascript trong tải nội dung html.

<script type="text/javascript"> 
var second; 
var first = new Date; 
function date_time() { 
    var id = 'Label1' 
    date = new Date; 
    second = date.getTime(); 
    year = date.getFullYear(); 
    month = date.getMonth(); 
    months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); 
    d = date.getDate(); 
    day = date.getDay(); 
    days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); 
    h = date.getHours(); 
    if (h < 10) { 
     h = "0" + h; 
    } 
    m = date.getMinutes(); 
    if (m < 10) { 
     m = "0" + m; 
     //min = min+1; 
    } 
    s = date.getSeconds(); 
    if (s < 10) { 
     s = "0" + s; 
     //sec = sec+1; 
    } 
    var timeDiff = second - first.getTime(); 
    var hours = Math.floor(timeDiff/(1000 * 60 * 60)); 

    timeDiff -= hours * (1000 * 60 * 60); 



    var mins = Math.floor(timeDiff/(1000 * 60)); 

    timeDiff -= mins * (1000 * 60); 

    var secs = Math.floor(timeDiff/1000) 
    timeDiff -= secs * 1000; 

    result = 'LoginTime(HH:MM:SS) ' + hours + ':' + mins + ':' + secs + ' ' + days[day] + ' ' + months[month] + ' ' + d + ' ' + year + ' Clock(24hr): ' + h + ':' + m + ':' + s; 
    document.getElementById(id).innerHTML = result; 
    setTimeout('date_time("' + id + '");', '1000'); 
    return true; 
} 

By Santosh Kumar Murarkar

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