datetime模塊格式化以及去掉前導0的操作說明


個人對datetime模塊的總結

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']

~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM