2013-08-22 1 views
2

은 어리석은 질문 일 수 있습니다 ... 저는 루비에 새로 왔으며 최근에 여러 테이블을 일반적인 테이블로 병합하기위한 갈퀴 작업을 작성하고 있습니다. 한 가지해야 할 일은 데이터베이스에서 날짜를 가져온 다음 년과 월의 두 개의 정수로 날짜를 변환 한 다음 두 개의 별도 열에 저장하는 것입니다.루비의 날짜 문자열에서 연도를 가져 오는 쉬운 방법이 있습니까?

지난 주에이 작업 파일을 완료했지만 불행히도 파일이 우연히 제거되었으므로 코드를 다시 작성해야합니다. 원본 파일에서 날짜를 조작 한 방법을 기억하지 못했습니다. 원본 파일에서 사용한 방식이 현재 코드보다 더 간단하다고 생각합니다. 현재 코드는 다음과 같습니다.

fetched_time=DateTime.strptime(pr.fetched_time,"%Y-%m-%d") 
dr.year = fetched_time.strftime('%Y').to_i 
dr.month = fetched_time.strftime('%m').to_i 

나는 많은 키워드를 검색하려고했지만 결과가 도움이되지 않습니다. 다음 코드는 날짜 문자열을 정수로 변환하는 가장 좋은 방법입니까?

대단히 감사합니다. Date#year를 사용하여

답변

8

예 가능 :

require 'date' 

d = Date.parse("20-08-2013") 
d.year # => 2013 
+0

감사합니다. 그것은 내가 원하는 것입니다! 간단하고 간단합니다. 그리고 @MrYoshiji, 내 코드 형식을 편집 해 주셔서 감사합니다! – SSj

0
now = Time.now.to_s 
# => "2013-09-10 11:09:14 -0500" 
fetched_time=DateTime.strptime(now, "%Y-%m-%d").to_s 
# => "2013-09-10T00:00:00+00:00" 
year = Date.parse(fetched_time).year 
# => 2013 
month = Date.parse(fetched_time).month 
# => 9 
year.class 
# => Fixnum 
month.class 
# => Fixnum 

또는

fetched_date=Date.strptime(now, "%Y-%m-%d").to_s 
# => "2013-09-10" 
date = Date.parse(fetched_date) 
# => #<Date: 2013-09-10 ((2456546j,0s,0n),+0s,2299161j)> 

는 오히려 어쨌든 문자열보다 Date 객체를 사용하지 않을까요? 타임 스탬프는 무엇으로 구성됩니까? 나는 Rails와 ActiveRecord에 익숙하지 않다.

ActiveRecord :: Base.default_timezone = #을 (를) 어떻게 설정 하시겠습니까? 경우

당신은 그들은 율리우스 일 번호입니다

Date.jd(2299161) 
# => #<Date: 1582-10-15 ((2299161j,0s,0n),+0s,2299161j)> 
Date.jd(2456546) 
# => #<Date: 2013-09-10 ((2456546j,0s,0n),+0s,2299161j)> 

에 그들을 pluging 시도 그 여분의 숫자는 Date 객체 에 무엇인지 알고 싶습니다. 그 마지막 하나는 이탈리아와 일부 카톨릭 국가들을위한 달력 개혁을위한 것입니다.

Date::ITALY 
# => 2299161 
+0

데이터베이스에 저장된 날짜로부터 선택 상자를 선택하여 웹 페이지에 표시 할 연도 또는 월 부분 만 가져 왔기 때문에 문자열을 만들고 싶습니다. 데이터베이스에서 날짜를 읽을 때 반환되는 값은 항상 문자열일까요? – SSj

관련 문제