Time to Read

30秒

DateTime#new_offset を用いて、引数に「何日」ずれるか(時差を24で割った値)を突っ込めば良い。日本なら、Rational(9, 24)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require 'date'
d = DateTime.parse("Tue, 22 Mar 2011 03:30:45 +0000")
#=> #<DateTime: 4714833881/1920,0,2299161>
d.to_s
#=> "2011-03-22T03:30:45+00:00"
d.offset
#=> Rational(0, 1)
d = d.new_offset(9)
#=> #<DateTime: 4714833881/1920,9,2299161>
d.to_s
#=> "2011-03-31T03:30:45+216:00"
d = d.new_offset(Rational(9, 24))
#=> #<DateTime: 4714833881/1920,3/8,2299161>
d.to_s
#=> "2011-03-22T12:30:45+09:00"