【问题标题】:Loop with function: how to update date field?带函数的循环:如何更新日期字段?
【发布时间】:2020-08-23 10:27:19
【问题描述】:

我需要每天迭代以下包含此参数的函数,如下所示:

start_date=input("\nStart date: mm/dd/yyyy ")
end_date=start_date

fun(start_date,end_date)

其中 start_date 应该是用户以该格式选择的日期。 End_date 必须等于开始日期,因为我对一日搜索感兴趣。但是,我还需要在其他日子重复这项研究。 我的代码目前正在执行以下操作:

  • 输入开始日期。这是我的开始日期。例如:2020 年 8 月 22 日
  • 然后设置 end_date 等于 start_date。那么它等于 08/22/2020
  • 应用此功能查找 2020 年 8 月 22 日的信息;
  • 当它完成时(它包含在我的函数中),请更新日期,加一(即 08/23/2020);
  • 在 08/23/2020 重复搜索

我很难找到第二天,也因为可能有几个月有 30、31 和 28/29 天。

您能告诉我如何更新我的代码吗?

【问题讨论】:

  • 似乎原则上的问题是要求使用字符串进行计算。但实际上,您应该在读入后立即将日期转换为 datetime.datetime 对象(参见 datetime.datetime.strptime),以该形式进行所有操作,并且仅在需要时转换回字符串以用于输出目的(参见 strftime 方法)。
  • 这能回答你的问题吗? How to increment a datetime by one day?
  • 具体转换为日期时间:dt = datetime.datetime.strptime('08/22/2020', '%m/%d/%Y'),再次转换回:dt.strftime('%m/%d/%Y'),并进行计算,请参阅几个人发布的链接。
  • 参考 timedelta 类。它的唯一目的是在 datetime 对象中添加、减去 days/h/m/s。

标签: python loops


【解决方案1】:

这可能会有所帮助:

for n in range(int((end_date - start_date).days)):
        yield start_date + timedelta(n)

我正在使用生成器来隐藏/抽象日期范围内的迭代。

【讨论】:

    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多