Giả sử tôi có một đối tượng datetime chẳng hạn DateTime.now
. Tôi muốn đặt giờ và phút thành 0 (nửa đêm). Làm thế nào tôi có thể làm điều đó?
Giả sử tôi có một đối tượng datetime chẳng hạn DateTime.now
. Tôi muốn đặt giờ và phút thành 0 (nửa đêm). Làm thế nào tôi có thể làm điều đó?
Câu trả lời:
Nhờ ActiveSupport bạn có thể sử dụng:
DateTime.now.midnight
DateTime.now.beginning_of_day
HOẶC LÀ
DateTime.now.change({ hour: 0, min: 0, sec: 0 })
# More concisely
DateTime.now.change({ hour: 0 })
now = DateTime.now
DateTime.new(now.year, now.month, now.day, 0, 0, 0, now.zone)
HOẶC LÀ
now = DateTime.now
DateTime.parse(now.strftime("%Y-%m-%dT00:00:00%z"))
DateTime.new(now.year, now.month, now.day, 0,0,0, now.zone) != now.to_date.to_datetime
Đừng bận tâm, hiểu rồi. Cần tạo DateTime mới:
DateTime.new(now.year, now.month, now.day, 0, 0, 0, 0)
DateTime.new(Time.now.year, Time.now.month, Time.now.day, 0, 0, 0)
nó hoạt động.
now = DateTime.now
DateTime
. Bạn sẽ gặp phải những vấn đề khó chịu nếu bạn sống ở một quốc gia có thời gian tiết kiệm ánh sáng ban ngày như Vương quốc Anh. Xem giải thích tại đây. gist.github.com/pixeltrix/e2298822dd89d854444b
Cảnh báo : DateTime.now.midnight
và DateTime.now.beginning_of_day
trả về cùng một giá trị (là giờ 0 của ngày hiện tại - nửa đêm không trả về 24:00:00 như bạn mong đợi từ tên của nó).
Vì vậy, tôi thêm thông tin này làm thông tin thêm cho bất kỳ ai có thể sử dụng câu trả lời được chấp nhận để tính nửa đêm x ngày trong tương lai.
Ví dụ: bản dùng thử miễn phí 14 ngày sẽ hết hạn vào nửa đêm của ngày 14:
DateTime.now.midnight + 14.days
là buổi sáng của ngày thứ 14, tương đương với phiên dùng thử 13,5 ngày (x là phần thời gian còn lại trong ngày - nếu bây giờ là buổi trưa, thì đó là phiên tòa 13,5 ngày).
Bạn thực sự cần làm điều này:
DateTime.now.midnight + 15.days
để có được nửa đêm vào ngày 14.
Vì lý do này, tôi luôn thích sử dụng beginning_of_day
, vì đó là 00:00:00. Sử dụng nửa đêm có thể gây hiểu lầm / hiểu nhầm.
Nếu bạn thường sử dụng nó, hãy cân nhắc cài đặt gem này để cải thiện phân tích cú pháp ngày:
https://github.com/mojombo/chronic
require 'chronic'
Chronic.parse('this 0:00')