【问题标题】:python datetime operationpython日期时间操作
【发布时间】:2013-03-30 22:14:06
【问题描述】:

我有以下错误,谁能解释一下 datetime.datetime 和 datetime.date 之间的区别?

TypeError: 不支持的操作数类型 -: 'datetime.datetime' 和 'datetime.date'

【问题讨论】:

  • 这是什么语言?
  • 抱歉编辑了,python,我从文档中得到了两个对象的定义,但仍然难以理解差异,这只是几秒钟吗?如何将其中一个转换为相同的格式?
  • 输入help(datetime.datetime)help(datetime.date)

标签: python datetime


【解决方案1】:

date 只是一个日期(年、月、日),而datetime 还包括一个时间(年、月、日、小时、分钟、秒、毫秒)。

不能直接比较两者,因为需要明确指定如何处理时间部分。您是完全忽略时间部分,还是在必要时选择一些任意时间进行比较(通常是午夜)?这个选择取决于哪个最适合您的情况,实际上,只有您可以确定。

更具体地说,您必须将date 升级为datetime,或将datetime 降级为date。给定dt 作为日期时间,d 作为日期,后者更容易一些(而且通常更有意义——你可以直接调用dt.date()),但前者也不难(datetime.datetime(d.year, d.month, d.day)) .

在您的代码中,它可能看起来像 dt.date() - ddt - datetime.datetime(d.year, d.month, d.day)

请注意,这将返回一个 datetime.timedelta 对象,这是另一种略有不同的动物 - 它不代表特定时间点,仅代表两点之间的差异(即,您不能将其用作日历上的日期)。

【讨论】:

    【解决方案2】:

    顾名思义,datetime 包含有关日期和时间的信息,而date 只是一个日期。这就是为什么允许减去两个日期时间并返回一个timedelta(两个瞬间之间的时间差),但减去一个datetime 和一个date 是不允许的——因为date 指的是一整天,所以不清楚到您要计算到当天的哪个部分的距离。

    要修复错误,您必须指定您引用的日期中的哪个时间点。例如,要让它引用日期开头的午夜,请将 dt - d 替换为 dt - datetime.datetime(d.year, d.month, d.day)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 2021-08-25
      • 2014-09-08
      相关资源
      最近更新 更多