首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将datetime.datetime.second转换为整数

问将datetime.datetime.second转换为整数
EN

Stack Overflow用户
提问于 2018-02-06 18:21:00
回答 1查看 2.5K关注 0票数 1

我正尝试在Python3中将datetime.datetime.second转换为整数,我想对这个值进行四舍五入,然后在函数datetime.time(hour=h,minute=m,second=s)中使用整数值,其中h、m和s表示整数。我目前收到一条错误消息,内容如下:

代码语言:javascript
复制
    s = int(datetime.datetime.second)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'getset_descriptor'

下面是我的代码片段,它显示了我正在尝试做的事情。

代码语言:javascript
复制
s = int(datetime.datetime.second)
#code to be added here should round s to nearest 0 or 5
m = int(datetime.datetime.minute)
h = int(datetime.datetime.hour)
t0 = datetime.time(hour=h,minute=m,second=s)

请解释一下为什么这个类型转换不起作用,datetime.datetime.second实际上返回的是什么,我的问题有什么解决方案。

我期望代码返回当前时间的秒数。例如,如果它是10:29:34,当代码运行时,我希望s设置为34。我试图将秒数四舍五入为0或5。因此,在本例中,我希望将秒数舍入为35,然后获取10和29的值,并将它们分别存储在h和m中。然后将这些值放入datetime.time()中,并在稍后的代码中显示该时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-06 18:25:55

datetime.datetime.second不会向您提供当前时间。它不是您通常想要使用的对象;它是datetime.datetime类的实现细节。

要将当前时间作为datetime.time()对象获取,请使用datetime.datetime.now() function,然后在返回的datetime实例上使用.time() method:

代码语言:javascript
复制
now = datetime.datetime.now().time()

演示:

代码语言:javascript
复制
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2018, 2, 6, 10, 29, 9, 758417)
>>> datetime.datetime.now().time()
datetime.time(10, 29, 11, 837654)

如果需要操作这些值,可以使用time.replace() method使用更新后的值创建一个新的datetime.time()实例。

因此,要舍入秒值,您可以使用:

代码语言:javascript
复制
now = datetime.datetime.now().time()
now_rounded = now.replace(second=int(5 * round(now.second / 5)))  # round to nearest multiple of 5

准确地说,datetime.datetime.second、datetime.datetime.minute和datetime.datetime.hour是descriptor objects,它们允许您访问datetime.datetime实例的内部信息;正是这些对象使datetime.datetime类的实例具有.second、.minute和.hour属性:

代码语言:javascript
复制
>>> dt = datetime.datetime.now()
>>> dt.second
26
>>> datetime.datetime.second.__get__(dt, datetime.datetime)
26
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48640622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档