0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

タイムゾーンの変換について

Posted at

事前知識

UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。協定世界時 (UTC) での1970年1月1日午前0時0分0秒(UNIXエポック)から形式的な経過秒数として表される。(wiki引用)

Unix時刻とは実際にどういったものなのか、例を出します
2024年1月1日9:00(JST) と
2024年1月1日0:00(UTC) はUnix時間で表すと
「1704067200」
になります。

Unix時間

上記で解説しましたが、
2024年1月1日9:00(JST) と2024年1月1日0:00(UTC) は
「1704067200」という整数です。
つまり2024年1月1日9:00(JST) と2024年1月1日0:00(UTC)の、
実体は全く同じとなります。
UNIX時間は不変なもので、それをどこのタイムゾーンから参照しているに過ぎないのです。

タイムゾーンとは

タイムゾーンとは地球上の異なる地域における標準時刻を指します。地球は24のタイムゾーンに分割されており、各タイムゾーンはおおよそ経度15度ごとに設定されています。

±9hしてはいけない理由

先ほど2024年1月1日9:00(JST) と2024年1月1日0:00(UTC)の実体は「1704067200」と解説しました。
ここで直接±9hの処理を行うと「1704067200」(UNIX時間)に変更を行うことになります。
そうです!不変なUNIX時間を変更していることになります。

ではどうするか

タイムゾーンを変更しましょう。
例えばPythonのライブラリを使うと

from datetime import datetime
import pytz

# UTCでのdatetimeオブジェクトを作成
utc_time = datetime(2024, 1, 1, 0, 0, 0, tzinfo=pytz.utc)
print(f"UTC: {utc_time}")

# 日本標準時(JST)のタイムゾーンを取得
jst = pytz.timezone('Asia/Tokyo')

# JSTに変換
jst_time = utc_time.astimezone(jst)
print(f"JST: {jst_time}")

以下が結果です。

UTC time: 2024-01-01 00:00:00+00:00
JST time: 2024-01-01 09:00:00+09:00

timedeltaを使用する場合

import datetime

date_str = "2024-01-01 00:00:00"
dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
# UTCからJSTへのオフセットを計算 (JSTはUTC+9時間)
offset = datetime.timedelta(hours=9)
# オフセットを適用してJST時間を計算
dt_jst = dt + offset
# 文字列として出力
print("JST time: " + dt_jst.strftime('%Y-%m-%d %H:%M:%S'))

以下が結果

JST time: 2024-01-01 09:00:00

+9時間しているように見えますがタイムゾーンの時差を指定しているだけなのでUNIX時間は変わりません。

まとめ

UNIX時間を変更することはやめましょう。
タイムゾーンを変更しましょう。

余談

GCPでは時間がUTCで表示されます。
これはUTCで時間を持っているわけでなく、持っているのはあくまでUnix時間でそれをUTCで表示しているだけです。
UTCで持っている は
はニュアンスが違います。
UTCで表示しているだけです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?