Ruby : CSV 파일에서 2 개의 DateTimes가 주어진 지속 시간을 어떻게 계산합니까?

StackOverflow https://stackoverflow.com/questions/1173644

문제

시작 및 마감 시간이 포함 된 여러 CSV 파일이 있습니다. FasterCSV를 사용하여 파일을 구문 분석 할 수 있지만 Ruby에서 지속 시간을 얻는 가장 좋은 방법은 모르겠습니다. CSV 파일의 각 행에 대해 생성 된 해시의 값은 다음과 같습니다.

start time: Mon Jul 20 18:25:17 -0400 2009
end time: Mon Jul 20 18:49:43 -0400 2009
도움이 되었습니까?

해결책

한 데이터 시간을 다른 시간을 빼서 지속 시간을 얻을 수 있습니다. date_time 변환기를 포함하면 FasterCSV에서 DateTime 객체를 얻을 수 있습니다. 예를 들어:

FasterCSV.foreach(some_file, :converters => [:date_time]) do |row|
    #blah
end

또는 dateTime#parse를 사용하여 직접 변환 할 수 있습니다.

거기에서 당신은 사용할 수 있습니다 날짜#day_fraction_to_time 배열이 포함되어 있습니다 [hours, minutes, seconds, fraction_of_a_second], 오늘의 일부보다 작업하기가 더 쉽다고 생각합니다.

표시 방법에 따라 도움이되는 정보가있을 수 있습니다. 이 질문에 대한 답변. 이러한 답변은 레일을위한 것이지만, 레일의 필요한 부품을 항상 포함 시키거나 기능의 소스 (레일 문서에서 사용 가능한)를보고 어떻게 수행하는지 확인할 수 있습니다. 상당히 자기 설명 적입니다.

다른 팁

그것이 "최고"인지 확실하지 않지만 EG DateTime 클래스를 사용할 수 있습니다.

require 'date'

d1 = DateTime.parse("Mon Jul 20 18:25:17 -0400 2009")
d2 = DateTime.parse("Mon Jul 21 18:25:17 -0400 2009")

puts "Duration is #{(d2-d1).to_f} days"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top