2012-08-14 2 views
1

@date, @time 및 @datetime의 3 개 개체가 있습니다. @time 및 @datetime 객체의 영역을 사용하여 @date 객체를 시간 (datetime)으로 변환하는 방법은 무엇입니까?레일에서 일부 영역의 날짜를 시간으로 변환 3.2

예 :

@date = '2012-1-1' 
@time = '2012-08-14 14:48:47 +1000' 
@datetime = '2012-08-14 14:48:47 +0500' 
@converted_date_to_time = ...  # should give '2012-1-1 00:00:00 +1000' 
@converted_date_to_datetime = ... # should give '2012-1-1 00:00:00 +0500' 

답변

2

당신은 내 로컬 시간대 (웰링턴, +13)를 사용하는이

1.9.3p194> date = '2012-1-1' 
=> "2012-1-1" 
1.9.3p194> Time.parse(date) 
=> 2012-01-01 00:00:00 +1300 

같은 날짜를 구문 분석 할 수 있습니다. 당신은 또한 당신이 조금 잘못 보이지만 다시 내 로컬 시간대를 사용하고 있기 때문에 그건 알 수 시간 문자열 같은 방법으로

1.9.3p194> time = '2012-08-14 14:48:47 +1000' 
=> "2012-08-14 14:48:47 +1000" 
1.9.3p194> Time.parse(time) 
=> 2012-08-14 16:48:47 +1200 

을 구문 분석 할 수 있으므로 정확하지만, 현재 나의 시간대에 있습니다. 그런 다음 원하는 시간대로 변환 할 수 있습니다.

1.9.3p194> Time.parse(time).in_time_zone('Moscow') 
=> Tue, 14 Aug 2012 08:48:47 MSK +04:00 

1.9.3p194> Time.parse(time).in_time_zone('Brisbane') 
=> Tue, 14 Aug 2012 14:48:47 EST +10:00 

은뿐만 아니라 당신의 datetime 문자열을 동일하게 작동합니다. 특정 시간대를 사용하려면

, 당신은

1.9.3p194> Time.find_zone('Tokyo').parse('2012-08-14 14:48:47 +0500') 
=> Tue, 14 Aug 2012 18:48:47 JST +09:00 
+0

올바른지, '2012-1-1'.to_time.in_time_zone ('Moscow')하지만 Time.parse ('2012-1-1') .in_time_zone ('Moscow')을 사용하지 마세요. – jtomasrl

2

을 다음과 같이 config.time_zone에 지정된 영역에 구문 분석 시간을 원하는 경우에, 당신이 사용할 수있는 수행 할 수 있습니다

Time.zone.parse('2012-08-14 14:48:47 +1000') 

Time 클래스는 이제 막 큰 범위의 날짜를 지원하고 Rails는 Time.zone을 통해 시간대를 처리하기 때문에 몇 가지 특별한 요구 사항이 없다면 DateTime을 사용하지 않을 것입니다.

관련 문제