简体   繁体   English

在 datetime 对象中添加或更改时间

[英]Add or change time in datetime object

I have multiple datetime objects, for example:我有多个日期时间对象,例如:

>>a
datetime.datetime(2009, 11, 1, 0, 0)

I want to keep date unchanged and alter time to zeros (three digits in time):我想保持日期不变并将时间更改为零(时间上的三位数字):

>>b
datetime.datetime(2009, 11, 1, 0, 0, 0)

Probably simple but i can't figure it out可能很简单,但我想不通

EDIT: For some reason a zero for seconds doesnt work.编辑:出于某种原因,秒为零不起作用。 It does not matter, it works with a 1:没关系,它适用于 1:

>>a
datetime.datetime(2009, 11, 1, 0, 0)
>>b = datetime.datetime.combine(a.date(), datetime.time(0,0,0))
>>b
datetime.datetime(2009, 11, 1, 0, 0)
>>b = datetime.datetime.combine(a.date(), datetime.time(0,0,1))
>>b
datetime.datetime(2009, 11, 1, 0, 0, 1)

这有点繁琐,但您可以使用combine

b = datetime.datetime.combine(a.date(), datetime.time(0,0,0))
import datetime
date_with_zeros = datetime.datetime(2009, 11, 1, 1, 0, 0).replace(hour=0, minute=0, second=0)

Just use replace.就用替换吧。

datetime.datetime(2009, 11, 1, 0, 0) and datetime.datetime(2009, 11, 1, 0, 0, 0) create the same datetime objects. datetime.datetime(2009, 11, 1, 0, 0)datetime.datetime(2009, 11, 1, 0, 0, 0)创建相同的日期时间对象。 See https://docs.python.org/2/library/datetime.html#datetime.datetime for details.有关详细信息,请参阅https://docs.python.org/2/library/datetime.html#datetime.datetime

If you have non-zero hours, minutes or seconds you can use replace to make them zero:如果您有非零小时、分钟或秒,您可以使用replace使它们为零:

dt = datetime.datetime(2009, 11, 1, 3, 15, 49)
dt.replace(hour=0, minute=0, second=0)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM