반응형
두 날짜 사이의 일 수를 센다
이 두 날짜 사이의 일수를 어떻게 계산합니까?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Date (및 DateTime) 클래스를 사용하면 (end_date - start_date).to_i
일 수 차이를 얻을 수 있습니다 .
그 가정 end_date
및 start_date
클래스의 모두 ActiveSupport::TimeWithZone
레일에, 당신은 사용할 수 있습니다 :
(end_date.to_date - start_date.to_date).to_i
Rails에는 이 문제를 해결할 수 있는 도우미 가 내장되어 있습니다. 명심해야 할 것은 이것이 Actionview 헬퍼의 일부이므로 콘솔에서 직접 사용할 수 없다는 것입니다.
이 시도
<% start_time = "2012-03-02 14:46:21 +0100" %>
<% end_time = "2012-04-02 14:46:21 +0200" %>
<%= distance_of_time_in_words(start_time, end_time) %>
"about 1 month"
몇 초 만에 결과를 얻었으므로 이것이 효과가있었습니다.
(Time.now - self.created_at) / 86400
시간 범위에서 일 수를 얻는 것 (모든 일 수)
(start_date..end_date).count
(start_date..end_date).to_a.size
#=> 32
두 날짜 사이의 일 수를 얻으려면
(start_date...end_date).count
(start_date...end_date).to_a.size
#=> 31
이 날짜까지의 이전 답변 중 어느 것도 두 날짜 사이의 정확한 차이를 제공하지 않습니다.
가장 가까운 것은 thatdankent 입니다. 완전한 대답은 to_i
다음과 같이 변환 하고 나눕니다.
(Time.now.to_i - 23.hours.ago.to_i) / 86400
>> 0
(Time.now.to_i - 25.hours.ago.to_i) / 86400
>> 1
(Time.now.to_i - 1.day.ago.to_i) / 86400
>> 1
질문의 특정 예에서, Date
통과 된 시간이 관련이 있는지 구문 분석해서는 안됩니다 . Time.parse
대신 사용하십시오 .
두 날짜 ( DateTime
오브젝트) 사이의 하루 수를 유지하려면 다음을 수행하십시오 .
((end_at - start_at).to_f / 1.day).floor
def business_days_between(date1, date2)
business_days = 0
date = date2
while date > date1
business_days = business_days + 1 unless date.saturday? or date.sunday?
date = date - 1.day
end
business_days
end
참고 URL : https://stackoverflow.com/questions/9572860/count-number-of-days-between-two-dates
반응형
'IT story' 카테고리의 다른 글
.net에서 Windows 버전 감지 (0) | 2020.06.23 |
---|---|
파이썬 strptime () 및 시간대? (0) | 2020.06.23 |
Spark SQL의 DataFrame에서 열 유형을 변경하는 방법은 무엇입니까? (0) | 2020.06.23 |
C #의 배열에서 요소를 삭제하는 방법 (0) | 2020.06.23 |
Rails 3.2, FATAL : 사용자에 대한 피어 인증 실패 (PG :: Error) (0) | 2020.06.23 |