1. 程式人生 > >python3 日期時間與文字之間轉換 以及 改變時區

python3 日期時間與文字之間轉換 以及 改變時區

第一種方法

strftime()strptime() 的使用

函式 功能
strftime 日期時間 轉 文字
strptime 文字 轉 日期時間
import datetime

dt = datetime.datetime.strptime('2018-12-10T07:46:45.743+0000','%Y-%m-%dT%H:%M:%S.%f%z')
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=datetime.timezone.utc)
print(dt) #2018-12-10 07:46:45.743000+00:00 datetime.datetime.strftime(dt,'%y-%m-%d %H:%M:%S') #'18-12-10 07:46:45'

這裡只列一下我用到的,更多可以看官方文件:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

%字元 表意 數值範圍
%y 年(2位) 00, 01, …, 99
%Y 年(4位) 0001, 0002, …, 2013, 2014, …, 9998, 9999
%m 01, 02, …, 12
%d 01, 02, …, 31
%H 時(24小時制) 00, 01, …, 23
%M 00, 01, …, 59
%S 00, 01, …, 59
%f 毫秒 000000, 000001, …, 999999
%z 時區 (empty), +0000, -0400, +1030, +063415, -030712.345216

第二種方法

不用去操心文字格式,不用%去匹配,直接自動出結果

from dateutil.parser import parse

dt = parse("2018-12-10T07:46:45.743+0000")
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=tzutc())

print(dt)
#2018-12-10 07:46:45.743000+00:00

時區轉換

將日期時間的時區,轉換為東8區,也就是中國時間顯示。

from dateutil.parser import parse
import pytz

dt = parse("2018-12-10T07:46:45.743+0000")
#datetime.datetime(2018, 12, 10, 7, 46, 45, 743000, tzinfo=tzutc())

# 時區轉換
dt1=dt.astimezone(pytz.timezone("Asia/Shanghai"))
#datetime.datetime(2018, 12, 10, 15, 46, 45, 743000, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)

# 同一個時間,不同時區的結果
print('%s\n%s'%(dt,dt1))
#2018-12-10 07:46:45.743000+00:00
#2018-12-10 15:46:45.743000+08:00

============================================
本文中的第二種方法和時區轉換方法是從https://blog.csdn.net/junbujianwpl/article/details/79007371看到並整理過來的