個人對datetime模塊的總結
Python的datetime模塊格式化操作
- %y 兩位數的年份表示(00-99)
- %Y 四位數的年份表示(000-9999)
- %m 月份(01-12)
- %d 月內中的一天(0-31)
- %H 24小時制小時數(0-23)
- %I 12小時制小時數(01-12)
- %M 分鍾數(00=59)
- %S 秒(00-59)
- %a 本地簡化星期名稱
- %A 本地完整星期名稱
- %b 本地簡化的月份名稱
- %B 本地完整的月份名稱
- %c 本地相應的日期表示和時間表示
- %j 年內的一天(001-366)
- %p 本地A.M.或P.M.的等價符
- %U 一年中的星期數(00-53)星期天為星期的開始
- %w 星期(0-6),星期天為星期的開始
- %W 一年中的星期數(00-53)星期一為星期的開始
- %x 本地相應的日期表示
- %X 本地相應的時間表示
- %Z 當前時區的名稱
- %% %號本身
年月日格式化日期時去掉前導0
一般格式化日期用這種方式:
from datetime import datetime now = datetime.now() day_str = now.strftime("%Y.%m.%d") print(day_str) # 2020.03.16
但是這種格式化后如果月與日有個位數,前面會補0。
有時候前端會想要這樣的數據:2020.1.3。個位數不要0。
下面我總結了幾個方法:
只能在linux與mac平台上使用的方法
下面這種方法只能在linux與mac平台上使用,windows平台會報錯,本人親測:
from datetime import datetime days = ["2020.01.03","2020.02.04","2020.10.22"] days_lst = [] for i in days: day = datetime.strptime(i,"%Y.%m.%d") # print(day,type(day)) day_str = day.strftime("%Y.%-m.%-d") print(day_str) days_lst.append(day_str) # print(days_lst) # ['2020.1.3', '2020.2.4', '2020.10.22']
測試效果截圖
linux系統下:
mac系統下:
windows下會報錯:
通用的方法
通用的方式是使用timetuple這個方法去重新構建,代碼如下:
from datetime import datetime days = ["2020.01.03","2020.02.04","2020.10.22"] days_lst = [] for i in days: day = datetime.strptime(i,"%Y.%m.%d") # print(day,type(day)) tup = day.timetuple() # 這個結構體中沒有前導0 print(tup) # time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=3, tm_isdst=-1) day_str = f"{tup.tm_year}.{tup.tm_mon}.{tup.tm_mday}" days_lst.append(day_str) print(days_lst) # ['2020.1.3', '2020.2.4', '2020.10.22']
~~~