You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将日期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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:01:08