【问题标题】:how to initialize time() object in python如何在python中初始化时间()对象
【发布时间】:2012-08-30 17:59:34
【问题描述】:

我正在尝试像这样初始化一个时间对象:

t = datetime.time(0,0,0)

但我收到此错误:

descriptor 'time' requires a 'datetime.datetime' object but received a 'int'

我已经进口了这些东西

import datetime
from datetime import datetime, date, time
import time

它们似乎有点多余,所以我想知道这是否是导致问题的原因

我也在用strptime方法和combine方法

    earliest = datetime.combine(earliest, t)
    value = datetime.strptime(value, format)

【问题讨论】:

    标签: python date datetime time strptime


    【解决方案1】:

    您可以创建不带任何值的对象:

    >>> import datetime
    >>> datetime.time()
    datetime.time(0, 0)
    

    但是,您从模块中导入了 class 日期时间,替换了模块本身:

    >>> from datetime import datetime
    >>> datetime.time
    <method 'time' of 'datetime.datetime' objects>
    

    并且有一个不同的签名:

    >>> datetime.time()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: descriptor 'time' of 'datetime.datetime' object needs an argument
    >>> datetime.time(0)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: descriptor 'time' requires a 'datetime.datetime' object but received a 'int'
    

    要么导入整个模块,要么导入包含的类,但不要混搭。坚持:

    import datetime
    import time
    

    如果您需要这两个模块。

    【讨论】:

    • 三参数构造函数同样有效,只是多余。 docs.python.org/library/datetime.html#datetime.time
    • @Martijn 好的,我应该保留/更改什么?
    • @Martijn 我尝试只导入日期时间和时间,但是当我这样做时,我现在收到此错误:'module' object has no attribute 'strptime' refer to line : value = datetime.strptime(value , 格式)
    • @Santiago:这是一个类方法,请致电datetime.datetime.strptime()。
    【解决方案2】:

    时间的构造函数是:

    class datetime.time(hour[, minute[, second[, microsecond[, tzinfo]]]])
    

    (来自http://docs.python.org/library/datetime.html#time-objects)

    这对我有用:

    In [1]: import datetime
    
    In [2]: t = datetime.time(0, 0, 0)
    
    In [3]: print t
    00:00:00
    

    【讨论】:

      【解决方案3】:

      事实上,您是 import 与 datetime 冲突的 datetime。你的意思可能是time,除了你也是 importing 一个冲突的time。那么怎么样:

      import datetime as dt
      

      和

      t = dt.time(0, 0, 0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-17
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 2019-03-08
        • 1970-01-01
        • 2012-04-09
        • 2014-08-17
        相关资源
        最近更新 更多