Ruby/Rails: 날짜를 UNIX 타임스탬프로 변환
Rails 앱의 Date 개체에서 UNIX 타임스탬프(1970 GMT 이후의 초 수)를 가져오려면 어떻게 해야 합니까?
알고있어요Time#to_i
타임스탬프를 반환하지만 실행Date#to_time
그런 다음 타임스탬프를 가져오면 약 한 달 정도 시간이 단축됩니다(이유는 모르겠지만...).
도움을 주시면 감사하겠습니다. 감사합니다!
편집: 좋아요, 제가 그걸 알아낸 것 같아요. 저는 반복해서 여러 번 날짜를 처리하고 있었는데, 매번 시간대 불일치로 인해 날짜가 약간 옮겨졌고, 결국 제 타임스탬프가 한 달이나 빠졌습니다.그럼에도 불구하고, 저는 이것을 의지하지 않고 할 수 있는 방법이 있는지 알고 싶습니다.Date#to_time
.
코드date.to_time.to_i
잘 작동할 겁니다.아래 레일 콘솔 세션의 예는 다음과 같습니다.
>> Date.new(2009,11,26).to_time
=> Thu Nov 26 00:00:00 -0800 2009
>> Date.new(2009,11,26).to_time.to_i
=> 1259222400
>> Time.at(1259222400)
=> Thu Nov 26 00:00:00 -0800 2009
중간 DateTime 개체는 현지 시간이므로 타임스탬프가 예상한 시간과 몇 시간 차이가 날 수 있습니다.UTC 시간에 작업하려면 DateTime의 "utc" 방법을 사용하면 됩니다.
사용해 보면 다음과 같은 메시지가 나타납니다.
>> Date.today.to_time.to_i
=> 1259244000
>> Time.now.to_i
=> 1259275709
이 두 숫자의 차이는 다음과 같은 사실 때문입니다.Date
에는 현재 시간의 시간, 분 또는 초가 저장되지 않습니다.변환 aDate
아주Time
그날 자정이 될 겁니다
임의의 DateTime 개체가 있는 경우 Ruby 1.8에 대한 솔루션:
1.8.7-p374 :001 > require 'date'
=> true
1.8.7-p374 :002 > DateTime.new(2012, 1, 15).strftime('%s')
=> "1326585600"
권장되는 사용 옵션to_utc
또는utc
로컬 시간 오프셋을 수정할 수 없습니다.나를 위해 찾은 것은 다음과 같습니다.Time.utc()
올바르게 작동하고 코드는 더 적은 단계를 수반합니다.
> Time.utc(2016, 12, 25).to_i
=> 1482624000 # correct
대
> Date.new(2016, 12, 25).to_time.utc.to_i
=> 1482584400 # incorrect
사용 후 utc를 호출하면 다음과 같이 됩니다.Date
....
> Date.new(2016, 12, 25).to_time
=> 2016-12-25 00:00:00 +1100 # This will use your system's time offset
> Date.new(2016, 12, 25).to_time.utc
=> 2016-12-24 13:00:00 UTC
...명백하게 부르는 것은to_i
잘못된 타임스탬프를 제공할 것입니다.
DateTime.new(2012, 1, 15).to_time.to_i
언급URL : https://stackoverflow.com/questions/1805950/ruby-rails-converting-a-date-to-a-unix-timestamp
'source' 카테고리의 다른 글
이진 파일과의 Git 충돌 해결 (0) | 2023.06.01 |
---|---|
변수가 정수인지 확인하는 중 (0) | 2023.06.01 |
장기간 실행되는 Linux 프로세스의 시작 시간을 얻는 방법은 무엇입니까? (0) | 2023.05.27 |
UIButton의 텍스트 정렬 센터를 만드는 방법은 무엇입니까?IB 사용 (0) | 2023.05.27 |
jQuery에서 여러 CSS 속성을 어떻게 정의합니까? (0) | 2023.05.27 |