Rails に134740800
は、エポックからのミリ秒数である long 値があります。
mm-dd-yyyy
それを日付形式に変換するにはどうすればよいですか?
フォーマットは次のようなもので行われるとstrftime
思いますが、ロングを有効な日付に変換する正しい方法が見つからないようです。
Rails に134740800
は、エポックからのミリ秒数である long 値があります。
mm-dd-yyyy
それを日付形式に変換するにはどうすればよいですか?
フォーマットは次のようなもので行われるとstrftime
思いますが、ロングを有効な日付に変換する正しい方法が見つからないようです。
secs = 134740800/1000 # millisecs / 1000
t = Time.at(secs)
t.strftime("%m-%d-%Y")
出力
"01-02-1970"
これを試して:
require 'date'
DateTime.strptime("1318996912",'%s')
エポックからの秒数を意味すると思います。
Time.at seconds_since_epoch
フロートを渡すこともできます。ミリ秒がある場合は、1000.0
最初に割ります。strftime
その後、返されたオブジェクトを呼び出すことができTime
ます。
使用Time.at
:
irb(main):003:0> Time.at(134740800)
=> Tue Apr 09 08:00:00 -0400 1974
これは勧告です...回答がどれだけ速く実行されるかを確認することをお勧めします。簡単なベンチマークは次のとおりです。
require 'benchmark'
require 'date'
SECS = 134740800
LOOPS = 1_000_000
puts Time.at(SECS).strftime('%m-%d-%Y')
puts Date.strptime(SECS.to_s, '%s').strftime('%m-%d-%Y')
Benchmark.bm(14) do |x|
x.report('Time.at:') { LOOPS.times { Time.at(SECS) }}
x.report('Date.strptime:') { LOOPS.times { Date.strptime(SECS.to_s, '%s') }}
end
出力は次のとおりです。
04-09-1974
04-09-1974
user system total real
Time.at: 0.370000 0.020000 0.390000 ( 0.392761)
Date.strptime: 6.320000 0.050000 6.370000 ( 6.373248)