- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如何将下一个星期五凌晨 3 点计算为 datetime
对象?
说明:即,计算出的日期应始终大于 7 天,且小于或等于 14。
最佳答案
如果安装 dateutil ,那么你可以这样做:
import datetime
import dateutil.relativedelta as reldate
def following_friday(dt):
rd=reldate.relativedelta(
weekday=reldate.FR(+2),
hours=+21)
rd2=reldate.relativedelta(
hour=3,minute=0,second=0,microsecond=0)
return dt+rd+rd2
上面,hours=+21
告诉 relativedelta
在找到下一个星期五之前将 dt
递增 21 小时。因此,如果 dt
是 2010 年 3 月 12 日凌晨 2 点,加上 21 小时就是当天晚上 11 点 ,但是如果 dt
是在凌晨 3 点之后,然后加上 21 小时将 dt
插入星期六。
这是一些测试代码。
if __name__=='__main__':
today=datetime.datetime.now()
for dt in [today+datetime.timedelta(days=i) for i in range(-7,8)]:
print('%s --> %s'%(dt,following_friday(dt)))
产生:
2010-03-05 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-06 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-07 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-08 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-09 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-10 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-11 20:42:09.246124 --> 2010-03-19 03:00:00
2010-03-12 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-13 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-14 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-15 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-16 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-17 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-18 20:42:09.246124 --> 2010-03-26 03:00:00
2010-03-19 20:42:09.246124 --> 2010-04-02 03:00:00
凌晨 3 点之前:
two = datetime.datetime(2010, 3, 12, 2, 0)
for date in [two+datetime.timedelta(days=i) for i in range(-7,8)]:
result = following_friday(date)
print('{0}-->{1}'.format(date,result))
产量:
2010-03-05 02:00:00-->2010-03-12 03:00:00
2010-03-06 02:00:00-->2010-03-19 03:00:00
2010-03-07 02:00:00-->2010-03-19 03:00:00
2010-03-08 02:00:00-->2010-03-19 03:00:00
2010-03-09 02:00:00-->2010-03-19 03:00:00
2010-03-10 02:00:00-->2010-03-19 03:00:00
2010-03-11 02:00:00-->2010-03-19 03:00:00
2010-03-12 02:00:00-->2010-03-19 03:00:00
2010-03-13 02:00:00-->2010-03-26 03:00:00
2010-03-14 02:00:00-->2010-03-26 03:00:00
2010-03-15 02:00:00-->2010-03-26 03:00:00
2010-03-16 02:00:00-->2010-03-26 03:00:00
2010-03-17 02:00:00-->2010-03-26 03:00:00
2010-03-18 02:00:00-->2010-03-26 03:00:00
2010-03-19 02:00:00-->2010-03-26 03:00:00
关于python - 如何计算下周五凌晨 3 点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436840/
好的,我已经使用了 stackoverflow 上的一些帖子来获得一些 XML 数据的半工作转换。 在 XML 数据源中,我获得日期和时间,作为单独的元素 - 它们采用 GMT 时间。 因此,为了转换
我正在使用一个简单的 JavaScript 在网站上显示我所在国家/地区的本地时间,但它似乎已损坏。午夜 12 点之后,时钟应该重置为 AM,但它继续显示 PM 时间(例如,下午 1 点而不是上午 1
我正在使用 Java - Spring - Quartz 调度程序。我想在凌晨 3 点之前运行作业,以下是我的 cron 表达式。 0 0 3 * * ? 谁能告诉我这是正确的吗?它会在 24 小时下
我在nodejs中有一个cron,每5小时执行一次,代码如下: cron.schedule("0 0 */5 * * *") 我希望它每天凌晨 2 点执行,我应该更改什么? 谢谢 最佳答案 你应该使这
我有此列“ALLTime”(int(4)类型)! 我的查询更新(针对account_vip表的所有ID) mysql_query(Update account_vip SET ALLTime = AL
我是一名优秀的程序员,十分优秀!