Closed kachick closed 1 year ago
頻繁に使っていようと頻繁に忘れるというか正確に覚えておけない物の一つが日時操作で、JSTとUTC変換する時にUTCと比較して足すんだっけ引くんだっけみたいなのがよくわからなくなる そういうのを確認しようとirbを立ち上げると、今度は Time の操作を忘れている まぁすぐ出てくるやろとぐぐると、 in_time_zone を使えみたいなのばっか上位に来る。それはね、 Rails の機能であって Ruby が生やしている訳では無いの
ということで今更メモっておくけれど、 Time#localtime なら require 'time' すら無しで使える。 ただ JST やら Asia/Tokyo みたいな人間に優しい文字列での Zone 指定は出来ないので、自分で '+09:00' と書く必要がある。無指定でもマシンの地方時にはなるけれど、自分のPCでちょっと触る以外で使うのは不安だ
require 'time'
JST
Asia/Tokyo
結局 + なのか - なのかは毎回脳みその外から引っ張ってこないと解決出来ない話なのかなーと思ってたら、ミリタリータイムゾーンという1文字指定で I を使えばJST指定と同じになる様子。 こっちの方が覚えにくそうだなーと最初感じたけれど、 I は India から取っているらしいので案外想起しやすいかも。ただ IST とはまた違うところが厄介だ。
utc = Time.utc(2006, 1, 2, 15, 4, 5) #=> 2006-01-02 15:04:05 UTC utc.localtime #=> 2006-01-03 00:04:05 +0900 utc.localtime('+09:00') #=> 2006-01-03 00:04:05 +0900 utc.localtime('Asia/Tokyo') # => (irb):6:in `localtime': "+HH:MM", "-HH:MM", "UTC" or "A".."I","K".."Z" expected for utc_offset: Asia/Tokyo (ArgumentError) utc.localtime('JST') # => (irb):6:in `localtime': "+HH:MM", "-HH:MM", "UTC" or "A".."I","K".."Z" expected for utc_offset: Asia/Tokyo (ArgumentError) utc.localtime('I') #=> 2006-01-03 00:04:05 +0900 utc.localtime('-04:00') # パタゴニア #=> 2006-01-02 11:04:05 -0400
余談だけど、こういう時に何の日時サンプルが良いんだろと探しに行っては特に代表的なのが見つからず go のを使ったりしてしまう。 個人的にドラえもんの生年月日が好きなんだけど、あれ時間までは明記されてないんだよな・・・
頻繁に使っていようと頻繁に忘れるというか正確に覚えておけない物の一つが日時操作で、JSTとUTC変換する時にUTCと比較して足すんだっけ引くんだっけみたいなのがよくわからなくなる そういうのを確認しようとirbを立ち上げると、今度は Time の操作を忘れている まぁすぐ出てくるやろとぐぐると、 in_time_zone を使えみたいなのばっか上位に来る。それはね、 Rails の機能であって Ruby が生やしている訳では無いの
ということで今更メモっておくけれど、 Time#localtime なら
require 'time'
すら無しで使える。 ただJST
やらAsia/Tokyo
みたいな人間に優しい文字列での Zone 指定は出来ないので、自分で '+09:00' と書く必要がある。無指定でもマシンの地方時にはなるけれど、自分のPCでちょっと触る以外で使うのは不安だ結局 + なのか - なのかは毎回脳みその外から引っ張ってこないと解決出来ない話なのかなーと思ってたら、ミリタリータイムゾーンという1文字指定で I を使えばJST指定と同じになる様子。 こっちの方が覚えにくそうだなーと最初感じたけれど、 I は India から取っているらしいので案外想起しやすいかも。ただ IST とはまた違うところが厄介だ。
余談だけど、こういう時に何の日時サンプルが良いんだろと探しに行っては特に代表的なのが見つからず go のを使ったりしてしまう。 個人的にドラえもんの生年月日が好きなんだけど、あれ時間までは明記されてないんだよな・・・