답변:
ActiveSupport 덕분에 다음을 사용할 수 있습니다.
DateTime.now.midnight
DateTime.now.beginning_of_day
또는
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)
또는
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
신경 쓰지 마. 새 DateTime을 만들어야합니다.
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)
.
now = DateTime.now
DateTime
. 영국과 같이 일광 절약 시간제를 사용하는 국가에 거주하면 성가신 문제가 발생합니다. 여기에서 설명을 참조하십시오. gist.github.com/pixeltrix/e2298822dd89d854444b
경고 : DateTime.now.midnight
및 DateTime.now.beginning_of_day
(현재 날짜의 제로 시간 - 당신은 그 이름에서 기대하는 것처럼 자정 24:00:00 반환하지 않습니다) 같은 값을 반환합니다.
그래서 나는 미래의 자정 x 일을 계산하기 위해 받아 들여지는 대답을 사용할 수있는 사람을 위해 이것을 추가 정보로 추가하고 있습니다.
예를 들어 14 일 자정에 만료되는 14 일 무료 평가판은 다음과 같습니다.
DateTime.now.midnight + 14.days
13.x 일 평가판에 해당하는 14 일의 아침입니다 (x는 남은 하루의 일부입니다. 지금 정오이면 13.5 일 평가판입니다).
실제로 다음을 수행해야합니다.
DateTime.now.midnight + 15.days
14 일 자정에 도착합니다.
이런 이유로 저는 beginning_of_day
00:00:00이므로 항상 사용하는 것을 선호합니다 . 자정을 사용하면 오해의 소지가 있거나 오해를받을 수 있습니다.
자주 사용하는 경우이 gem을 설치하여 날짜 구문 분석을 개선하는 것이 좋습니다.
https://github.com/mojombo/chronic
require 'chronic'
Chronic.parse('this 0:00')