« Range オブジェクトのOffset プロパティの使い方 | トップページ | Shapeを指定して削除する »

2011年8月20日 (土)

時差の計算

時差の計算なんて言うと
中学の地理の授業を思い出します。

調べてみると日本では、
以前はGMT(グリニッジ標準時刻)が採用されていて、
現在はUTC(協定世界時)が採用されているということです。

GMTではイギリスのグリニッジが標準になっていましたが、
UTCでもイギリスが時差0であるようです。
両者の違いの詳細はわかりませんが、
GMTが100年に何秒かズレる誤差があり
UTCはそれを調整したもの。

そんな認識でいいのでしょうか?

いずれにせよ日常生活では意識もできない誤差だと思います。
Excelでは100分の1秒までしか表示できないので
まあGMTとUTCの違いを意識する必要はなさそうです。
間違っていたらすいません。

かつての日本標準時JSTはGMT+9、
つまりイギリスのグリニッジから9時間足した時間でした。
今はUTC+9、
協定世界時から9時間足した時間です。
時間を足すということは
イギリスよりも9時間進んでいるということです。

地球の自転を思い浮かべると感覚的にわかります。
日本は中国から見て「日のいづる国」ですよ、
別にナショナリズムはありません。
ただそう覚えているだけです。
日本が16時のとき、イギリスは16-9=7時です。

Web上のデータを使うときはその国の標準時間が
UTCからどれだけズレているかわかれば、
日本標準時に直せます。

こちらのWikipediaにUTCについての世界地図があります。
UTC+0

Web上のデータに「UTC+1」や「GMT+1」などと
明記されていれば日本標準時に直すのは8時間足せばいいだけです。
「UTC+11」であれば3時間引きます。
「GMT-7」であれば(9+7)時間足します。

これについては「世界時計」で検索すれば、
たくさんのサイトがありますので一目瞭然です。

標準時が明記されていない時は調べるしかないです。

世界の時刻を計算するのに
TimeValue関数を使います。

コードはこちら

世界の時刻を計算するコード:

Sub macro110820a()
'世界の時刻の計算

    Cells(1, 1) = "場所"
    Cells(1, 2) = "時刻"
    Columns(2).NumberFormatLocal = "yyyy/mm/dd hh:mm:ss(aaa)"
   
    'イギリス
        Cells(2, 1) = "ロンドン(イギリス)GMT+1"
        Cells(2, 2) = Now - TimeValue("08:00:00")
    'ニューデリー(インド)
        Cells(3, 1) = "ニューデリー(インド)GMT+5:30"
        Cells(3, 2) = Now - TimeValue("03:30:00")
    '上海(中国)
        Cells(4, 1) = "上海(中国)GMT+8"
        Cells(4, 2) = Now - TimeValue("01:00:00")
    '日本
        Cells(5, 1) = "日本"
        Cells(5, 2) = Now
    'シドニー
        Cells(6, 1) = "シドニー(オーストラリア)"
        Cells(6, 2) = Now + TimeValue("01:00:00")
    'サンフランシスコ
        Cells(7, 1) = "サンフランシスコ(アメリカ)GMT-7"
        Cells(7, 2) = Now - TimeValue("16:00:00")
    'ニューヨーク
        Cells(8, 1) = "ニューヨーク(アメリカ)GMT-4"
        Cells(8, 2) = Now - TimeValue("13:00:00")
    'サンパウロ(ブラジル)
        Cells(9, 1) = "サンパウロ(ブラジル)GMT-3"
        Cells(9, 2) = Now - TimeValue("12:00:00")
       
End Sub

実行前のシート:
Vba20110820a

足し算と引き算です。

|

« Range オブジェクトのOffset プロパティの使い方 | トップページ | Shapeを指定して削除する »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 時差の計算:

« Range オブジェクトのOffset プロパティの使い方 | トップページ | Shapeを指定して削除する »