如何从DD- mm - yyyy格式得到DD的D,如果day = 01到09,那么输出应该是1到9



Output I got = January 01, 2023

但要求输出= 2023年1月1日

import datetime
import tkinter as tk
from tkcalendar import DateEntry
root = tk.Tk()
root.geometry("380x220")
midate = datetime.date(2020,1,1)
cal1 = DateEntry(root, selectmode='day')
cal1.grid(row=1, column=1, padx=20, pady=30)
def my_upd():
print(cal1.get_date().strftime("%B %d, %Y"))
b1 = tk.Button(root, text='Read', command=lambda:my_upd())
b1.grid(row=2, column=1)
root.mainloop()

似乎很奇怪,一个月中没有填充日期的格式代码。但是你可以把它们一块一块地放在一起,去掉前面的零。

d = cal1.get_date()
print(d.strftime("%B ") + d.strftime("%d").lstrip("0") + d.strftime(", %Y"))

你也可以做同样的事情,而不用为strftime而烦恼:

print(d.strftime("%B ") + str(d.day) + d.strftime(", %Y"))

即使你去看python官方文档,你也找不到任何没有前导零的day格式。

您可以删除这些零的唯一方法是简单地使用python的replace()字符串方法。

import datetime
midate = datetime.date(2020,1,1)
def my_upd():
print(midate.strftime("%B %d, %Y").replace(' 0', ' '))
my_upd()

输出:

January 1, 2020

一些平台将支持%e,但是如果您的应用程序希望在所有情况下运行,则必须遵循安全步骤。

这个问题已经在下面的链接中得到了答案。Python strftime - date不带前导0?

如果你想获得关于Python日期格式的详细信息,我建议你看看下面的文档。

https://docs.python.org/3/library/datetime.html strftime-and-strptime-format-codes

最新更新