17

Python 里的时间、日期与格式化的互相转换

 3 years ago
source link: https://www.hongweipeng.com/index.php/archives/2014/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1wxpXI5DsRERNVkLI3ci0xlxnRAAOVHDzkgkPXD6rgeDn4P7LjnCTh5jBkEs+kNJkh5+GVMWKsN9h8xcQvcELCFIPBjJ2ZiyRrP3vUWaKZzH42+VdBtm3mfO9tQxvnMz/nisqXumrks43DGU0VLXVhmTlnxfxN5XUDTU2wD9lG4VxgHBAVZV49nWKKSOR5yNB7f7/n1S6f23B8loU4jn6mjodr8yBPIGKKJmmc2i+ylKf3UwqR5ChPO3y0wOLNi0

ma4n7sVcQ4uVSTw7qhrO6akQdxuJZiJagmcPrS2d9kR9ebqVIXcEMbuo4RE1/SgNrZiT7SWEqd0FQ6hOq04YZSzP449YLG375tNXe2uHF1tj5TgtXpeohBDp9kRl5ydp

time 模块

iHZJcy7rUOzwBrF+GVw8gO/f8ezPiVf9u8rvh/gONE3STTn5qCXFXSh0udtaMAZcHowX1oDgWGz1KJ/41Bq9ov4VNPpOPKtWlCZQ7ZjtLMZfhLvNiWUZrsGSWl91SOh9GVT7uMSOa0QtQpC12M9+8Kd8OQYVhFGMOTOlbPSavBTGR0JZQN3nrFzAYO4Vj99QBcBTdi7N9A7Z64IyBLVQ81u45zFv9M1/JG1CIjm94ALEcsJVO2USeQ/dIAk8mRNvfUvD7V564Ql3ndC1RqPDtQ==

了解时间戳、结构化时间对象、时间格式化

# 时间戳  单位秒
time.time()

# 结构化时间对象
st = time.localtime() # 等价于 time.localtime( time.time() )
print(st)
"""
time.struct_time(
    tm_year=2020,   # 年
    tm_mon=7,       # 月
    tm_mday=14,     # 日
    tm_hour=19,     # 时
    tm_min=26,      # 分
    tm_sec=51,      # 秒
    tm_wday=1,      # 星期几 0:表示星期一
    tm_yday=196,    # 今年的第n天
    tm_isdst=0      # 是否为夏令时
)
"""

iHZJcy7rUOzwBrF+GVw8gF/6PTtxL7EwhJdDci/pnVyWSAqRU2yMIawsLcf3ZRTsYTuB7RnvSb7Mc6UpIOtdBg==

# 格式化的时间字符串
time.ctime()                     # Tue Jul 14 23:20:07 2020   # 这是取本地时间
time.ctime(time.time())          # Tue Jul 14 23:20:07 2020
time.asctime( time.localtime() ) # Tue Jul 14 23:20:07 2020

time.strftime("%Y-%m-%d %H:%M:%S")                   # 2020-07-14 23:20:07 # 默认取当前的本地时间
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 2020-07-14 23:20:07
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())    # 2020-07-14 15:20:07 # 取 UTC 时间

fU7tKGon9oLRLf4L/Ra9DqHlwbucYnjrTarw1zmwPKfMvNE4ZZLuiXqxWooEDwlVKSkDgL3Alg8kIW9gVln2XlnyhQvIFKKoFLyBONRu1I5kg3i+yWJIMt0dWbcX+OtiIW76UyqsM01XOUw5bMLo/TuNPY+7Fsw12XO1+oF71+w3pFPeqdqJ+2pZuJWWzs05OpoVay2rDD3ILHMaywr9W7guGGv104Eo/EpnKVgJm5/wVCHoxNJaDuNOcqEGVZwETIsjr0wwH+/HqkkXb9DRpzD/WYemcBCXNUTqC4xJvhPEsY9MWC/iwepOT75o2IVz

三种格式之间的互转

KwT+HGSrHJ+qUUgHE2rL7vlEj97A7+ReFnpjKeOu3juw33hjoO9ZiKJOPNNo+NbmLN0k8X/pQMfzO9r5JtPVLg==

# 时间戳 -> 结构化对象
time.gmtime( time.time() )       # UTC 时间
time.localtime( time.time() )    # 本地时间

# 结构化时间对象 -> 时间戳
time.mktime( time.localtime() )

eIiWweOAH/RZyjhgzmV7/wnG4ybieZPHNR/2+JVCBlXXuy3UU6R3j1b2PDir8wmFOBVGjx3nWO+d74vz/KEI4aqAoDD6z/03NELYG3LS/zE=

# 结构化对象 -> 格式化时间字符串
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())

# 时间格式字符串 -> 结构化时间对象
strtime = '2020-07-14 13:28:18'
time.strptime(strtime, "%Y-%m-%d %H:%M:%S")

iHZJcy7rUOzwBrF+GVw8gAM7IvpE1c/pJsUzgS1syMhA552fs0gBvbYhPG7lUVnUD2di/6CEVftLQR+Dl4R576wwfaT8qkc69pBRGEQbOiQfriwchbhg/4xBBCo+sxlCbL5cD01FNiuVqeSx2RPWAgVNeuexJq/YP3bTX/K8KBo=

bkT7LhzYwKlRZSazi+vJzRLVv3zZnGiJwVGHixsM8ULD1VqF80LFx6ZWajL1M7kqBEYEl/eHnL45p+woH0EPDyWtkOaB9AXgxbpk4WxJc12kZdLYFqsVsR81pqCEkm9qxXdrIEBwP05AxLhMvQ9GgA==

datetime 模块

Ir1MJuWetOl/ff3v7BdiLsSlir+A3wH58Vjs2TXQCTg1T5UivFRrZweR9kooMIKZQSbk6KExx2EIt7qe9JXAUvEVyMbS9sZn9O39ZromjtIsp/+DyAnmalNiPTG60OQKKiG7iidqoS2NCU7wX1Sujnomlt70HKJLFWlHVsvn4zSpW4GZeuQRqTNp6zjgeMe8AuXk2h4Hg9cEWK1LP7Ce8cXXuMYIToJd0QfCqfI+lcaFBSPGwhk21Fk1Wx0kCDq1

datetime.date
datetime.time
datetime.datetime
datetime.timedelta

N1v2FjWUJkBNQmDI/Q+qJa74WYiWall6u4ca4ro2lyqj/pPfaRbQXu1ZinkmNjsBE2nVaCP9dCauKBvHC/iheS1WF/SKMm+U5JHJRFfoTa9jnYg+2famJrB1ao80NsgGa0jWIfZvh0Mq35k0e0T17zOqEwLwXrlBpbCfSpx5QFo=

# 创建 datetime 对象
datetime.datetime(year, month=None, day=None, hour=0, minute=0, second=0,
                microsecond=0, tzinfo=None)
datetime.datetime.now()  # 以当前时间作为 datetime
datetime.datetime.today() # 与 now 一样

其他格式转 datetime

# 时间戳 -> datetime
datetime.datetime.fromtimestamp(time.time())

# 字符串格式 -> datetime
datetime.datetime.strptime('2020-07-14 23:56:10', '%Y-%m-%d %H:%M:%S')

# 结构化对象 -> datetime 没有直接转换接口,需要先转为时间戳
datetime.datetime.fromtimestamp(time.mktime(time.localtime()))

datetime 转其他格式

dt = datetime.datetime.now()

# 转为结构化时间对象
dt.timetuple()

# 转为时间戳
dt.timestamp()

# 转为字符串格式
dt.strftime('%Y-%m-%d %H:%M:%S')

时区的转换

s5wm4nRhf6sO1mQzmsKAo5zVsVqVbrNlhRgw+9PGD32g8NEsjE5LGO24Y+ijRZqEGb6E2XV9LrUx3CGDQd19R4//1LvSlchn1IQ0TtGiA9YSADiymcD1kaEAozUS4XqutyOSloEC8Cs7693441RPMRbfjvBIs7qSuB/59vwPX13ajvyOTaZ+Oyhy9fPxheYsbrd4HOicpa5IypqJBFMcT6lxq+rPZ46A5Lgg9TNdm3b5kWwlS5R0q7A+ia+Vg9RFXPk8yZVP8qh8M1jUQLNxEOhsqdkfwUuR2pBhVdqVouye9AI0HCn+iFpi0XjXHbizgsKtIli8Qk1nRzJ1iU9kXbhqz4IViow3L5zL54OWrHakipKjgIQcqfAYYgSHA4G4gEID0N/jLyeE1+cb2wtT1AjZ2NJt4eORHpvYF8Lce8pRmCN+EKBcc+7/S3AIWOENOVNPTPTlWPNVyR7dPN2mHJHyNilFs42j1bFbmsG1aP3426ANEdEZNiRK4zhMUn4M

from datetime import datetime, timedelta, timezone

# utc 时间
utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
print(utc_dt) # 2020-07-14 15:20:07.534451+00:00

# 北京时间
cn_dt = utc_dt.astimezone(timezone(timedelta(hours=8))) # 东八区
print(cn_dt) # 2020-07-14 23:20:07.534451+08:00

ja_dt = utc_dt.astimezone(timezone(timedelta(hours=9))) # 日本时间
print(jan_dt) # 2020-07-15 00:20:07.534451+09:00

# 北京时间转东京时间
cn_2_ja_dt = cn_dt.astimezone(timezone(timedelta(hours=9)))
print(cn_2_ja_dt) # 2020-07-15 00:20:07.534451+09:00

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK