Tại sao không phải là Time.current
tương đương với tương đương được phân tích cú pháp của nó?Tại sao hai lịch biểu này lại khác nhau?
current = Time.current
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
parsed = Time.zone.parse('16 Sep 2015 17:10:56')
# Wed, 16 Sep 2015 17:10:56 CEST +02:00
current == parsed
# false <= What ?!
current.to_i == parsed.to_i
# true
Ticket.create(datetime: current)
# ...
Ticket.find_by_datetime(parsed)
# nil <= Why ?!
Tôi thực sự gặp sự cố với ứng dụng Ruby on Rails nơi tôi cố gắng tìm bản ghi dựa trên thuộc tính datetime đã được phân tích cú pháp, như được hiển thị trên dòng cuối cùng.
Tôi thực sự không hiểu. Các múi giờ giống nhau, thời gian bằng nhau đến vài giây. Điều gì đang xảy ra ở đây?
Hơn nữa, tôi nên tiến hành như thế nào để tìm một bản ghi dựa trên ngày giờ được phân tích cú pháp?
Đồng hồ máy tính của bạn có thể có độ chính xác phụ thứ hai ;-) (gợi ý: 'to_f') – Stefan
Cảm ơn! Được rồi, vì vậy, ngày giờ được phân tích cú pháp không có độ chính xác phụ thứ hai. Nhưng sau đó tôi nên làm gì để lấy bản ghi trong cơ sở dữ liệu? –
Hoặc cắt bớt thuộc tính thành toàn bộ giây trước khi lưu nó vào cơ sở dữ liệu hoặc vượt qua một phạm vi bao gồm toàn bộ giây: 'Ticket.where (datetime: parsed ... parsed + 1)' – Stefan