Tôi có mã theo dõi thời gian cho nhân viên. Nó tạo ra một truy cập để hiển thị các nhân viên bao lâu họ đã được đồng hồ in cho.Làm cách nào để lấy số giây giữa hai DateTimes trong Ruby trên Rails
Đây là mã hiện tại:
start_time = Time.parse(self.settings.first_clock_in)
total_seconds = Time.now - start_time
hours = (total_seconds/ 3600).to_i
minutes = ((total_seconds % 3600)/60).to_i
seconds = ((total_seconds % 3600) % 60).to_i
này hoạt động tốt. Nhưng bởi vì Thời gian được giới hạn trong phạm vi 1970 - 2038, chúng tôi đang cố gắng thay thế tất cả Thời gian sử dụng bằng DateTimes. Tôi không thể tìm ra cách lấy số giây giữa hai DateTimes. Trừ chúng sẽ mang lại một Rational mà tôi không biết cách diễn giải, trừ khi trừ đi Times sẽ tạo ra sự khác biệt trong vài giây.
Ah, tôi biết nó trả về nó trong vài ngày, tôi không biết rằng điều này sẽ bao gồm cả phân số của một ngày là tốt. Cảm ơn. – Tilendor
Điều này không hoạt động chính xác trong trường hợp bước nhảy vọt thứ hai (https://en.wikipedia.org/wiki/Leap_second). –
Chỉ cần một lưu ý cho bất cứ ai khác có thể bị nhầm lẫn bởi điều này. Có, trừ hai 'DateTime's trả về thời gian trôi qua trong ngày. Tuy nhiên, trong Rails một thuộc tính mô hình mà bạn di chuyển dưới dạng 'datetime' thực sự có thể là' ActiveSupport :: TimeWithZone' và trừ hai trong số đó trả về thời gian trôi qua trong * giây *. – evanrmurphy