忽略或重置日期时间秒和微秒

时间:2018-06-14 11:13:43

标签: python python-3.x datetime

当我预先形成datetime.now()以获取当前时间时,会打印出来(使用print),如下所示:

  

2018-06-14 13:21:02.331933

我想忽略秒和微秒并将其打印出来:

  

2018-06-14 13:21:00

我知道我可以使用strftime转换为我选择的字符串,但我不想更改字符串,而是更改datetime对象本身以使其具有0秒和0毫秒(执行strftime并立即strptime转换回来似乎很愚蠢。)

换句话说,从datetime(2018, 6, 14, 14, 7, 27, 326853)转换为datetime(2018, 6, 14, 14, 7)

我试过这样的事:

now = datetime.now()
now = now - timedelta(seconds=now.second, microseconds=now.microsecond)

这样可行,但我确信这是一种更简单,更有效的方法(在迭代不同文件时我需要做数千次)。所以我的问题是,我是否正确,有一种更简单的方法,如果是这样,你对这种问题的解决方案是什么?

2 个答案:

答案 0 :(得分:3)

使用datetime.replace

now = datetime.now().replace(second=0, microsecond=0)

答案 1 :(得分:3)

使用datetime.replace() method创建新实例,并将特定属性设置为所需的值:

now = datetime.now().replace(second=0, microsecond=0)

演示:

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2018, 6, 14, 12, 16, 4, 738362)
>>> datetime.now().replace(second=0, microsecond=0)
datetime.datetime(2018, 6, 14, 12, 16)