如何在python中从datetime.date()的输出中删除0:00:00?

2024-06-29 01:07:18 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从datetime.date()函数的输出中删除0:00:00?例如:

import datetime
now = datetime.datetime.now()
year1 = now.strftime("%Y")
month2 = now.strftime("%m")
day3 = now.strftime("%d")
year = int(year1)
month = int(month2)
day = int(day3)
first_day = datetime.date(2021,8,1)
second_day = datetime.date(year,month,day)
daysleft = first_day - second_day
print(daysleft)

我得到输出:

9 days, 0:00:00 

如果您不理解问题标题,我的主要目标是删除句点(.)之前的0:00:00。我在stack overflow/exchange和其他网站上看到过许多类似的问题,但在python编码语言中却什么都没有


Tags: 函数datetimedateyearnowintfirstsecond
3条回答

如果您的唯一目标是打印输出,而不关心将daysleft作为datetime对象进行维护,则始终可以将其转换为字符串并.split()如下所示:

print(str(daysleft).split(",")[0])

datetime有许多有用的函数和值

要仅获取days,您可以daysleft.days

print(f'{daysleft.days} days')

但您也可以将其他代码简化为

now = datetime.datetime.now()
daysleft = first_day - now.date()

today = datetime.date.today()
daysleft = first_day - today

顺便说一句:

如果您需要yearmonthday作为数字,那么您可以将其作为

year   = now.year
month  = now.month
day    = now.day
hour   = now.hour
minute = now.minute
second = now.second
ms     = now.microsecond
weekday = now.weekday()    # 0 = monday, ..., 6 = sunday
weekday = now.isoweekday() # 1 = monday, ..., 7 = sunday

其他有用的函数timedelta

one_day = datetime.timedelta(days=1)

today = datetime.date.today()

yesterday = today - one_day
tomorrow  = today + one_day

day_after_tomorrow = today + 2*one_day

使用tkinter的最小工作代码

import datetime

first_day = datetime.date(2021, 8, 1)

now = datetime.datetime.now()
daysleft = first_day - now.date()

today = datetime.date.today()
daysleft = first_day - today

print(f'{daysleft.days} days')

#  -

import tkinter as tk

root = tk.Tk()
lbl = tk.Label(root, text=f'{daysleft.days} days till {first_day}')
lbl.pack()
root.mainloop()

您可以通过请求datetime.timedelta对象的.days属性来获得天数。例如:

print('{} days'.format(daysleft.days))

相关问题 更多 >