gpt4 book ai didi

python - 在 Python 中镜像日期

转载 作者:行者123 更新时间:2023-11-28 21:55:33 24 4
gpt4 key购买 nike

假设我们有一个连续运行的系统,我们在特定日期 start_date 对其进行了一些更改。

我们想比较以下变化的影响:

  • start_date 到今天的日期之间的全天时间窗(下面以黄色显示)
  • start_date 之前发生的全天的等效时间窗口(一周中的同一天)(在下方以蓝色显示)

例如,假设我在 3 月 25 日(红色)开始我的实验,而今天是 3 月 29 日(绿色),我想获得 < strong>四个 定义的日期time_window_before(黄色的两个日期)和time_window_after(蓝色的两个日期)。

enter image description here

这个想法是比较在 start_date 之前和之后实验开始的实验结果,在可能的数量上时间窗上的天数与实验开始的日期对称(以一周中的天数表示)。

换句话说,给定 start_date 和今天的日期,我如何找到定义 time_window_before time_window_after 的日期对(如 datetime 对象)?

更新

因为我被问到如果 start_date 和今天的日期不在同一周会发生什么,下面是一个这样的例子:

enter image description here

最佳答案

Python 的 datetime 库包含您需要的所有添加和减去日期的方法:

from datetime import date, timedelta

def get_time_window_after(experiment_start_date, experiment_end_date):
# Add 1 day to start and subtract 1 day from end
print "After Start: %s" %(experiment_start_date + timedelta(days = 1))
print "After End: %s" %(experiment_end_date - timedelta(days = 1))

def get_time_window_before(experiment_start_date, experiment_end_date):
# Find the total length of the experiment
delta = experiment_end_date - experiment_start_date
# Determine how many weeks it covers (add 1 because same week would be 0)
delta_magnitude = 1 + (delta.days / 7)

# Subtract 7 days per week that the experiment covered, also add/subtract 1 day
print "Before Start: %s" %(experiment_start_date - timedelta(days = 7 * delta_magnitude) + timedelta(days = 1))
print "Before End: %s" %(experiment_end_date - timedelta(days = 7 * delta_magnitude) - timedelta(days = 1))

以下是我运行代码以确保其正常工作的示例:

print "\nResults for March 25 2014 to March 29 2014"
get_time_window_after(date(2014, 3, 25), date(2014, 3, 29))
get_time_window_before(date(2014, 3, 25), date(2014, 3, 29))

print "\nResults for March 18 2014 to March 29 2014"
get_time_window_after(date(2014, 3, 18), date(2014, 3, 29))
get_time_window_before(date(2014, 3, 18), date(2014, 3, 29))

print "\nResults for March 18 2014 to April 04 2014"
get_time_window_after(date(2014, 3, 18), date(2014, 4, 4))
get_time_window_before(date(2014, 3, 18), date(2014, 4, 4))

注意:如果您让这些函数返回值并设置变量,您可以使用 time_window_after 作为 get_time_window_before() 函数的输入并放弃重复的 timedelta (天数 = 1) 逻辑。

关于python - 在 Python 中镜像日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22696593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com