@kyanny's blog

My thoughts, my life. Views/opinions are my own.

JavaScript でローカル時刻を別のタイムゾーンにおけるローカル時刻に変換する方法

http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/6016329

必要に迫られたのでこれを読んでコードも書いてみて確かに期待する時刻を得られたんだけど(ローカル時刻をブエノスアイレスとかにして東京の時刻を得られるか試したらできた)理屈がさっぱり腑に落ちない。特に Step 3 の

// obtain UTC time in msec
utc = localTime + localOffset;

ここがどうしようもなく腑に落ちない。 UTC 時刻を得るには getTime() を使うのではないの?なんで getTime() ではダメなの?これだと d.getTime() とは全然違う時刻をあらわすタイムスタンプを計算して得ているよね?(みたいな思考の流れで混乱してしまう)

これが理解できなくて気持ち悪くて今日はものすごく具合が悪くなってフラフラになってしまった。「JavaScript の Date 型においては、ローカルタイムゾーンの時計と UTC 以外の時刻表現を得ることは不可能なので、 UTC でいうと全然違う時刻のインスタンスをつくってそいつの文字列表現を無理やり「元の時刻の別タイムゾーンにおける時刻表現」であるかのように扱っている」というふうに無理やり理解しようとしているけどやっぱり究極的に腑に落ちない。

根本的にタイムゾーンと日付処理が理解できてないのだろうか。それはいったい何をどう勉強すれば理解できるんだ。単におれの頭が悪すぎるだけなのか。疲れる。