【问题标题】:import datetime versus from datetime import datetime导入日期时间与从日期时间导入日期时间
【发布时间】:2019-12-11 12:08:13
【问题描述】:

我尝试使用时区信息设置日期时间。在这种情况下是 UTC。

当我尝试这段代码时,它可以工作:

from datetime import datetime, timezone
prueba = timezone.utc

fecha = datetime(1900, 1, 1, 1, 00, 00, 00000, tzinfo=prueba)

但是当我尝试这个时,它会出现“TypeError: 'module' object is not callable”的错误

import datetime
prueba = datetime.timezone.utc

fecha = datetime(1900, 1, 1, 1, 00, 00, 00000, tzinfo=prueba)

这对我来说没有意义,因为我指的是同一个班级。

【问题讨论】:

    标签: python python-3.x typeerror python-import python-datetime


    【解决方案1】:

    不同之处在于datetime 模块包含datetime 类。当你这样做时:

    from datetime import datetime, timezone
    

    您正在导入datetime.datetime 类,并将其称为datetimedatetime.timezone 类,并将其称为timezone

    当你这样做时

    import datetime
    

    您正在做的是导入整个 datetime 模块。datetime 现在指的是 datetime 模块,而不是 datetime.datetime 类。 datetime 类需要被称为datetime.datetime()

    【讨论】:

    • 感谢您的快速回答,但这对我来说并不敏感,datetime.datetime 是一个类,而不是一个函数。因此,如果将 datetime.datetime() 作为 datetime 作为类导入,则第二个代码示例必须使用 datetime.datetime().utc (不起作用)但 datetime.utc 定义超出了 datatime 类定义datetime.py: timezone.utc = timezone._create(timedelta(0))
    • 我已经改写了我的答案。在第一种情况下,from datetime import datetime,您正在从 datetime 模块导入 datetime 类。在第二个示例import datetime 中,您正在导入整个模块。
    • 第二个代码示例使用datetime.timezone.utc - 来自datetime 模块的timezone 类的utc 属性。
    • 我把这个留给其他需要它的人。第二个代码示例必须是这样: import datetime prueba = datetime.timezone.utc fecha = datetime.datetime(1900, 1, 1, 1, 00, 00, 00000, tzinfo=prueba)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多