時差を正確に扱う方法。hikomaの日記スマートフォン用の表示で見るhikomaの日記この広告は、90日以上更新していないブログに表示しています。時差を正確に扱う方法。遊ぶ時間がなくなってしまいました。眠っていたネタがあったので忘れる前に書き残しておきます。日時の国際化というと、時差の変換が一番イメージしやすいかと思います。時間で保存しておいて、表示する人のタイムゾーンに合わせて時差を変換してやるのが一般的かと思います。ソートする分には、タイムゾーン変換は不要なので、レコードを取得した後にアプリケーション側でタイムゾーン変換をすれば問題ありません。する必要が出てきます。すればいいのですが、サマータイムがある国など時差が変動する場合、単純に足し引きすると、変わり目で時差がずれてしまうことが簡単に起きてしまいます。Time)が始まり、時計が3時に進みました。するようにしないといけません。側でもタイムゾーン変換をする必要が出てきます。タイムゾーン変換を行う場合、変換の元になるタイムゾーンの情報が必要になります。呼ばれる有名なデータベースがあり、多くのシステムはこれを元にタイムゾーン変換を行っています。サマータイムや政治的な理由でどこかの国のタイムゾーン情報が変わるたびに、データベースも更新されていて、年に何回も更新されています。回更新されていることがわかります。本題それで、ここから本題なんですけど、アプリケーションとデータベースの両方でタイムゾーンを正確に扱いたい場合、同一のタイムゾーン情報を参照しないと、変換が一致しないケースがでてきます。タイムゾーン変換を合わせる方法の一つを紹介したいと思います。いうライブラリを使います(最近はデファクト?)。今回はうるう秒は扱いません。今年の7月1日に8時59分60秒が挿入されるというホットな話題なので少し調べてみたのですが、話すと長くなってしまうので気が向いたら別エントリで。未サポートみたいですし。使って、タイムゾーンデータのSQLファイルを作成します(参考)。タイムゾーン情報を変更してビルドします(参考)。ファイルが出来上がり。データベースに流し込めばタイムゾーンが更新されます。クラスパスに入れてあげてください。タイムゾーン情報が一致し、時差を正確に扱えるようになりました。タイムゾーン変換できるか試してみましょう。output/tzinfo.sql次にテーブルを作って、データを挿入。使って、タイムゾーン変換してみると。なんでもやっちゃってください。タイムゾーン変換もできちゃいます。作らないといけないようです。一つしか設定できず、標準時差の変更に対応していません。方が少しは楽に生成するかと思います。上手くタイムゾーンを扱えるので、興味があればソース読んで勉強してみてください。用のタイムゾーン情報を生成する方法を紹介しました。肝心なことは、タイムゾーン情報は頻繁に変更されるので、タイムゾーン変換する時は、元になったタイムゾーン情報が何かを意識するようになってもらいたいなと思います。(追記)とは言っても、普通の使い方で影響が出る範囲はほとんどないと思うので、神経質になる必要はないんじゃないかと思います。時差を正確に扱う方法。時差を正確に扱う方法。読者になるはてなブログをはじめよう!hikomaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。