ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
タイムゾーンと現在日時の取得とは
サーバが UTC で稼働している場合や、複数地域のユーザーを相手にするアプリでは、「いつのこと?」を正しく扱うためにタイムゾーンを意識した日時処理が必須です。Python では datetime モジュールに加え、pytz または zoneinfo でタイムゾーンを取り扱います。
方式の選び方
| 方式 | Python バージョン | 推奨度 |
|---|---|---|
zoneinfo(標準) | 3.9 以上 | ★★★(推奨) |
pytz(サードパーティ) | 3.8 以下も可 | ★★(互換用途) |
datetime.timezone 直接 | 3.2 以上 | ★(簡易用途) |
1. zoneinfo(Python 3.9+ 推奨)
インポート
from datetime import datetime
from zoneinfo import ZoneInfo
現在日時の取得
jst = ZoneInfo('Asia/Tokyo')
now = datetime.now(jst)
print(now)
# 2026-06-11 14:30:00+09:00
文字列化
# strftime で任意フォーマット
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str) # 2026-06-11 14:30:00
# ISO 8601 形式
print(now.isoformat()) # 2026-06-11T14:30:00+09:00
別タイムゾーンへの変換
utc = ZoneInfo('UTC')
ny = ZoneInfo('America/New_York')
now_jst = datetime.now(ZoneInfo('Asia/Tokyo'))
now_utc = now_jst.astimezone(utc)
now_ny = now_jst.astimezone(ny)
print(now_jst) # 2026-06-11 14:30:00+09:00
print(now_utc) # 2026-06-11 05:30:00+00:00
print(now_ny) # 2026-06-11 01:30:00-04:00
2. pytz(旧来からの定番)
インポート
from datetime import datetime
from pytz import timezone
現在日時の取得
jst = timezone('Asia/Tokyo')
now = datetime.now(jst)
print(now)
# 2026-06-11 14:30:00+09:00
日付の文字列化
now_str = now.strftime('%Y-%m-%d %H:%M:%S')
print(now_str) # 2026-06-11 14:30:00
pytz の注意点
pytz はlocalize() を使わずに datetime(2026, 6, 11, tzinfo=jst) のように直接渡すと、古い時刻の歴史的なオフセットが当たって誤動作することがあります。
# NG: 直接 tzinfo に渡すとオフセットがズレる
naive = datetime(2026, 6, 11, 14, 30)
bad = naive.replace(tzinfo=jst) # +09:19 とかになる場合がある
# OK: localize を使う
good = jst.localize(naive) # +09:00 になる
zoneinfo はこの問題がない(タプル渡しの替わりに不可変な情報を持つ)ため、新規コードでは zoneinfo を推奨します。
3. UTC を扱う簡易版
from datetime import datetime, timezone
now_utc = datetime.now(timezone.utc)
print(now_utc.isoformat())
# 2026-06-11T05:30:00+00:00
strftime / strptime フォーマット指定子
| 指定子 | 意味 | 例 |
|---|---|---|
%Y | 4 桁の西暦 | 2026 |
%m | 月 (01-12) | 06 |
%d | 日 (01-31) | 11 |
%H | 時 (00-23) | 14 |
%M | 分 (00-59) | 30 |
%S | 秒 (00-59) | 00 |
%z | UTC オフセット | +0900 |
%Z | タイムゾーン名 | JST |
%a / %A | 曜日(短/長) | Thu / Thursday |
文字列 → datetime に戻す
from datetime import datetime
from zoneinfo import ZoneInfo
s = '2026-06-11 14:30:00'
naive = datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
aware = naive.replace(tzinfo=ZoneInfo('Asia/Tokyo'))
print(aware) # 2026-06-11 14:30:00+09:00
# ISO 8601 文字列なら fromisoformat
dt = datetime.fromisoformat('2026-06-11T14:30:00+09:00')
print(dt) # 2026-06-11 14:30:00+09:00
naive と aware
| 種類 | tzinfo | 用途 |
|---|---|---|
| naive | None | タイムゾーン情報なし。地域不明 |
| aware | tzinfo を持つ | タイムゾーン情報あり。正確な時刻 |
naive と aware を混在させると例外。両方 aware に揃えるか、文字列でやり取りするのが安全です。
from datetime import datetime
from zoneinfo import ZoneInfo
naive = datetime(2026, 6, 11, 14, 30)
aware = datetime(2026, 6, 11, 14, 30, tzinfo=ZoneInfo('Asia/Tokyo'))
# print(aware - naive) # TypeError!
# 必ず aware に揃える
print(aware - aware.replace(tzinfo=ZoneInfo('UTC')))
よくあるタイムゾーン名
| 地域 | タイムゾーン名 | UTC オフセット |
|---|---|---|
| 日本 | Asia/Tokyo | +09:00 |
| UTC | UTC | +00:00 |
| ロンドン | Europe/London | +00:00 / +01:00 (DST) |
| ニューヨーク | America/New_York | -05:00 / -04:00 (DST) |
| ロサンゼルス | America/Los_Angeles | -08:00 / -07:00 (DST) |
| シンガポール | Asia/Singapore | +08:00 |
FAQ
Q: utcnow() はなぜ非推奨?
A: datetime.utcnow() は naive を返すため、aware と混在しやすく事故の元。Python 3.12 以降は非推奨。datetime.now(timezone.utc) を使いましょう。
Q: Windows で zoneinfo がエラーになる
A: pip install tzdata で IANA タイムゾーンデータベースを追加すると解決します。
関連
- datetime — 日付・時刻を扱う標準モジュール
- zoneinfo — IANA タイムゾーン(Python 3.9+)
- pytz — サードパーティのタイムゾーンライブラリ
- strftime — フォーマット指定で文字列化
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?