Rails DateTime.now không có thời gian


91

Tôi cần sử dụng DateTime.now để lấy ngày hiện tại và "loại bỏ" thời gian.

Ví dụ: điều này cho thấy những gì tôi không muốn:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

Chương trình này những gì tôi làm muốn:DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


10
DateTime không có Time is Date :) ý bạn là Date.today?
ajahongir 17/09/13

Câu trả lời:


173

Bạn có thể sử dụng một trong những cách sau:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date

@sekmo begin_of_day là một phần của hỗ trợ hoạt động (đường ray).
Igor Kapkov

3
Tốt hơn là không sử dụng DateTime.nowmà không có vùng. Nó tốt hơn để sử dụng một trong Time.zone.now, DateTime.current, DateTime.now.in_time_zone, DateTime.now.utc, DateTime.now.getlocal, DateTime.now.iso8601, DateTime.now.jisx0301, DateTime.now.rfc3339, DateTime.now.to_i, DateTime.now.to_fthay thế.
Bryan Dimas

cảm ơn @BryanDimas, bình luận của bạn sẽ giúp. VPN có thể ảnh hưởng, nếu chaning ip sang các quốc gia khác?
Jenuel Ganawed

20

Những gì bạn cần là hàm strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")

Điều này có thể gây ra vấn đề quan trọng nếu bạn đang chèn dữ liệu vào một cơ sở dữ liệu mà hy vọng %Y-%m-%d %H:%M:%Sđịnh dạng dữ liệu vì nó sẽ đảo ngược tháng và ngày giá trị
quetzaluz

Đề xuất của tôi là sử dụng hàm strftime, định dạng được sử dụng mà bạn phải tự tùy chỉnh cho phù hợp
VP.


4

Nếu bạn hài lòng require 'active_support/core_ext', thì bạn có thể sử dụng

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800

1
Chỉ cần nhận thấy thẻ ruby-on-ray, vì vậy tôi đoán bạn đang hạnh phúc để yêu cầu ActiveSupport :)
Jon M


1

Nếu bạn muốn ngày hôm nay mà không có thời gian, chỉ cần sử dụng Date.today


0

Tìm ra. Những công việc này:

DateTime.now.in_time_zone.midnight
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.