Closed6

Python3_datetimeモジュール, timeモジュール, IANAゾーンデータベース

かじるかじる

Python実践レシピより

Python3エンジニア認定実践試験メモ

dateオブジェクト

main.py
from datetime import date

# dateオブジェクト
my_date = date(1945, 8, 15)
print(my_date)
# 1945-08-15
print(my_date.year, my_date.month, my_date.day, my_date.weekday())
# 1945 8 15 2

# ISO
print(my_date.isoformat())
# 1945-08-15

print(date.fromisoformat("1945-08-15"))
# 1945-08-15

# Format
print(my_date.strftime("%Y/%m/%d"))
# 1945/08/15

print(my_date.strftime("%Y %b %d (%a)"))
# 1945 Aug 15 (Wed)

print(date.today())
# 2024-08-15

# フォーマット
print(f"終戦記念日:{my_date:%Y年%m月%d日}")
# 終戦記念日:1945年08月15日
かじるかじる

timeオブジェクト

main.py
from datetime import time

# timeオブジェクト
print(time())
# 00:00:00

print(time(hour=15, minute=30, second=45))
# 15:30:45

my_time = time(hour=15, minute=30, second=45, microsecond=900)
print(my_time)
# 15:30:45.000900

print(my_time.hour, my_time.minute, my_time.second, my_time.microsecond)
# 15 30 45 900

print(my_time.isoformat())
# 15:30:45.000900

print(my_time.strftime("%H:%M:%S"))
# 15:30:45
かじるかじる

datetimeオブジェクト

main.py
from datetime import datetime

# datetimeオブジェクト
my_dt = datetime.now()
print(my_dt)
# 2024-08-15 15:37:54.024181

# dateオブジェクト
my_date = my_dt.date()
print(my_date)
# 2024-08-15

# timeオブジェクト
my_time = my_dt.time()
print(my_time)
# 15:39:04.389520

# IOSフォーマット
print(my_dt.isoformat())
# 2024-08-15T15:40:39.196797

print(datetime.fromisoformat("2024-08-15T15:40:39.196797"))
# 2024-08-15 15:40:39.196797
かじるかじる

timedeltaオブジェクト

main.py
from datetime import datetime, timedelta

# timedeltaオブジェクト

# 現在
dt_now = datetime.now()
print(dt_now)
# 2024-09-15 15:50:55.201163

# 1週間後
delta = timedelta(days=7)
dt_1week = dt_now + delta
print(dt_1week)
# 2024-09-22 15:54:50.995689

# 2週間後
delta = timedelta(days=7)
dt_2week = dt_now + delta * 2
print(dt_2week)
# 2024-09-29 15:55:58.139488

# 終戦
dt_war = datetime(1945, 8, 15)
print(dt_war)
# 1945-08-15 00:00:00

# 終戦から現在までの経過日数
dt_delta = dt_now - dt_war
print(dt_delta)
# 28886 days, 15:50:55.201163
かじるかじる

timeモジュール

main.py
import time

# UTCの現在時刻
print(time.gmtime())
# time.struct_time(
#  tm_year=20xx, tm_mon=x, tm_mday=x, 
#  tm_hour=x, tm_min=x, tm_sec=x, 
#  tm_wday=x, tm_yday=x, tm_isdst=0)

# ローカルの現在時刻雨(日本)
print(time.localtime())
# time.struct_time(
#  tm_year=20xx, tm_mon=x, tm_mday=x, 
#  tm_hour=x, tm_min=x, tm_sec=x, 
#  tm_wday=x, tm_yday=x, tm_isdst=0)

# フォーマット文字列
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 20xx-xx-xx xx:xx:xx

# エポックからの秒数
print(time.time())
# 1627307806.632527

# Sleep
for i in range(5):
	print(time.time())
	time.sleep(0.5)
# 1627307965.210623
# 1627307965.715698
# 1627307966.2172
# 1627307966.72234
# 1627307967.225332
かじるかじる

IANAゾーンデータベース

IANAタイムゾーンデータベースとは

InternetAssgned Numbers Authorityが管理している、
世界各地のタイムゾーン情報を収めたデータベースの事

main.py
from datetime import datetime
from zoneinfo import ZoneInfo

# 東京のZoneInfo
ASIA_TOKYO = ZoneInfo("Asia/Tokyo")
print(ASIA_TOKYO)
# Asia/Tokyo

# ロサンゼルスのZoneInfo
AMERICA_LOS = ZoneInfo("America/Los_Angeles")
print(AMERICA_LOS)
# America/Los_Angeles

# 指定日時のdatetimeオブジェクト
dt = datetime(2024, 10, 10, tzinfo=ASIA_TOKYO)
print(dt)
# 2024-10-10 00:00:00+09:0

# 東京からロサンゼルスに変更
dt = dt.astimezone(AMERICA_LOS)
print(dt)
# 2024-10-09 08:00:00-07:00
このスクラップは2ヶ月前にクローズされました