如何将日期01-09日转为1-9?解决tkcalendar日期显示问题
修改tkcalendar日期输出格式:去除日部分的前导零
当前代码使用%d格式化日期时,会将1-9号显示为带前导零的01-09。要实现January 1, 2023这类不带前导零的输出,直接提取日期对象的day属性即可(该属性为整数类型,自动去除前导零),结合月份名称和年份拼接输出是跨平台最可靠的方式。
修改后的完整代码:
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(): date_obj = cal1.get_date() # 通过day属性获取无前置零的日,拼接月份名称与年份 print(f"{date_obj.strftime('%B')} {date_obj.day}, {date_obj.year}") b1 = tk.Button(root, text='Read', command=lambda:my_upd()) b1.grid(row=2, column=1) root.mainloop()
补充说明
如果偏好使用strftime原生格式符,需区分操作系统:
- Windows系统用
%#d替代%d - 类Unix系统(Linux/macOS)用
%-d替代%d
对应的兼容代码示例:
def my_upd(): date_obj = cal1.get_date() import os if os.name == 'nt': formatted_date = date_obj.strftime("%B %#d, %Y") else: formatted_date = date_obj.strftime("%B %-d, %Y") print(formatted_date)
内容的提问来源于stack exchange,提问作者Chetan
相关产品推荐
相关产品推荐

