从文档中:
datetime.datetime.date() 返回具有相同年月日的日期对象。
您使用 datetime.datetime.date()
方法:
datetime.datetime.now().date()
显然,上面的表达式可以(并且应该恕我直言:)写成:
datetime.date.today()
.today()
)对于所述示例问题来说是最 Pythonic 的。
today()
也有一个 hour 组件。因此,如果您这样做:losdat = datetime.datetime.strptime(losdatstr, '%d%m%Y')
然后 if losdat < datetime.datetime.today():
将始终为真,因为 losdat
将有一个午夜的时间分量,该时间分量将在 today()
的时间戳之前
datetime.date
对象时,为什么要使用 datetime.datetime.today()
而不是 datetime.date.today()
?
您可以使用日期时间对象的 date() 方法将日期时间对象转换为日期,如下所示:
<datetime_object>.date()
答案已更新至 Python 3.7 及更多
以下是如何转换日期和时间对象
(又名 datetime.datetime
对象,存储在 models.DateTimeField
django model field 中的对象)
放入日期对象(又名 datetime.date
对象):
from datetime import datetime
#your date-and-time object
# let's supposed it is defined as
datetime_element = datetime(2020, 7, 10, 12, 56, 54, 324893)
# where
# datetime_element = datetime(year, month, day, hour, minute, second, milliseconds)
# WHAT YOU WANT: your date-only object
date_element = datetime_element.date()
为了清楚起见,如果您打印这些元素,这里是输出:
print(datetime_element)
2020-07-10 12:56:54.324893
print(date_element)
2020-07-10
您可以为(今天的日期和当天的名称和小时)输入此代码表单:datetime.datetime.now().strftime('%y-%m-%d %a %H:%M:%S')
'19-09-09 星期一 17:37:56'
并为(简单的今天日期)输入此代码:datetime.date.today().strftime('%y-%m-%d')
'19-09-10'
对象: datetime.datetime.now().date()
datetime.datetime.today().date()
datetime.datetime.utcnow().date()
datetime.datetime.today().time()
datetime.datetime.utcnow().date()
datetime.datetime.utcnow().time()
datetime.date
对象,而不是字符串,strftime
将返回(参考:docs.python.org/3/library/datetime.html#datetime.date.strftime)。
import time
import datetime
# use mktime to step by one day
# end - the last day, numdays - count of days to step back
def gen_dates_list(end, numdays):
start = end - datetime.timedelta(days=numdays+1)
end = int(time.mktime(end.timetuple()))
start = int(time.mktime(start.timetuple()))
# 86400 s = 1 day
return xrange(start, end, 86400)
# if you need reverse the list of dates
for dt in reversed(gen_dates_list(datetime.datetime.today(), 100)):
print datetime.datetime.fromtimestamp(dt).date()
我使用 data.strftime('%y-%m-%d')
和 lambda 将列传输到日期
Solved: AttributeError: 'Series' object has no attribute 'date'
您可以使用如下,
df["date"] = pd.to_datetime(df["date"]).dt.date
在上面的代码中,日期包含日期和时间(2020-09-21 22:32:00),使用上面的代码我们只能得到日期(2020-09-21)
datetime.datetime.utcnow()
和相应的datetime.datetime.utcnow().date()
datetime.datetime.now(pytz.timezone('US/Pacific')).date()
from datetime import datetime, date, timezone
和一个使用具有非零偏移量的时区,则datetime.now(timezone.utc).date()
可以 不同于datetime.now().date()
(后者也可用作date.today()
)。