2013-09-22 7 views
19

이것은 간단해야합니다 (분명히 분명하지는 않습니다). 그러나 ... 레일스에서 ​​미국 형식의 날짜로 변환하려는 밀리 초의 데이터베이스 문자열이 있습니다. 계산 된 호출 .to_date 내 친구가 될 것이지만 이상한 오류가 발생했습니다.밀리 초를 형식화 된 날짜로 변환하십시오.

article.date => "1379844601000" 

article.date.to_date 
NoMethodError: undefined method `div' for nil:NilClass 

누구든지 올바른 방법을 조언 할 수 있습니까?

답변

12

사용 Date.strptime을 줄 것이다 - 그러나 이것은 전에 먼저 초로 변환 :

sec = ('1379844601000'.to_f/1000).to_s 
Date.strptime(sec, '%s') 
//Sun, 22 Sep 2013 
+0

위대한 감사합니다 - MM-DD-YYYY로 표시 할 수있는 방법이 있습니까? DAY, DD MMM YYYY 대신에? – Nick

+0

사용 :'strftime' : http://apidock.com/ruby/DateTime/strftime – shem

-1

Time.parse ("1379844601000") 당신에게 날짜와 시간

+2

그게 효과가 있니? ArgumentError : "1379844601000"에 시간 정보가 없습니다. Date.parse는'ArgumentError : invalid date'를 제공합니다. – Nick

+0

잘 작동합니다. >> Time.parse ("1379844601000") => Sun Sep 22 16:32:36 +0530 2013 – vigneshre

+2

루비 버전 문제 같습니다. Ruby 1.9.x 버전에는이 구문 분석 옵션이 없습니다. 따라서 Time.strptime() 메서드를 사용하거나 다음과 같은 일부 보석을 사용할 수 있습니다. https://github.com/jeremyevans/ruby-american_date – vigneshre

24
Time.strptime(milliseconds.to_s, '%Q') 
// %Q - Number of milliseconds since 1970-01-01 00:00:00 UTC. 
+0

이것은 허용 된 대답이어야합니다. – pungoyal

관련 문제