【问题标题】:How can I get all the dates within a week of a certain day using datetime?如何使用日期时间获取某一天一周内的所有日期?
【发布时间】:2015-07-22 04:53:31
【问题描述】:

我有一些在字典中特定日期发生的测量值。好像

date_dictionary['YYYY-MM-DD'] = measurement.

我想计算从给定日期起 7 天内测量值之间的差异。当我将日期字符串转换为datetime.datetime 时,结果看起来像一个元组或数组,但不像一个。

有没有一种简单的方法可以从给定日期生成一周内的所有日期?如果是这样,我怎样才能有效地做到这一点?

【问题讨论】:

  • 向我们展示更多代码...您如何转换?它的行为如何?你期望它的表现如何? “差异”是什么意思?
  • 方差是一个统计量。我通过执行t = date_string.split('-')datetime.datetime( year = int(t[0]), month = int(t[1]), day = int(t[2]) ) 来转换字符串。我希望 datetime 表现得像一个数组或列表,所以我可以说 t=datetime.datetime(2015,02,11)t+(0,0,7) = datetime.datetime(2015,02,18)

标签: python date datetime date-math


【解决方案1】:

使用 datetime 生成给定日期之后的所有 7 个日期,包括给定日期,您可以这样做:

import datetime
dt = datetime.datetime(...)
week_dates = [ dt + datetime.timedelta(days=i) for i in range(7) ]

有些库提供了更好的 API 来执行日期时间/日期操作,最著名的是 pandas(尽管它包含更多内容)。见pandas.date_range

【讨论】:

    【解决方案2】:

    您可以使用 - timedelta 来执行此操作。示例 -

    >>> from datetime import datetime,timedelta
    >>> d = datetime.strptime('2015-07-22','%Y-%m-%d')
    >>> for i in range(1,8):
    ...     print(d + timedelta(days=i))
    ...
    2015-07-23 00:00:00
    2015-07-24 00:00:00
    2015-07-25 00:00:00
    2015-07-26 00:00:00
    2015-07-27 00:00:00
    2015-07-28 00:00:00
    2015-07-29 00:00:00
    

    您实际上不需要打印它,datetime 对象 + timedelta 对象返回一个 datetime 对象。您可以直接在计算中使用返回的 datetime 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2019-03-31
      • 2010-12-26
      • 1970-01-01
      • 2017-02-24
      • 2011-01-30
      相关资源
      最近更新 更多