【问题标题】:Work out if date is in current week python确定日期是否在本周 python
【发布时间】:2023-03-19 06:50:01
【问题描述】:

我正在尝试编写一些代码来检查本周是否更新了文档,如果没有则读取数据并进行更新。我需要能够检查文档的最后修改日期/时间是否发生在本周(周一至周日)。

我知道这段代码给了我文件的最后修改时间,作为自纪元以来的浮点数:

os.path.getmtime('path')

而且我知道我可以使用 time.ctime 将其作为字符串日期:

time.ctime(os.path.getmtime('path'))

但我不确定如何检查该日期是否在本周。我也不知道转换为 datetime 对象是否比 ctime 更容易?

【问题讨论】:

标签: python date datetime


【解决方案1】:

您可以使用datetime.isocalendar 并比较week 属性,基本上

import os
from datetime import datetime

t_file = datetime.fromtimestamp(os.path.getmtime(filepath))
t_now = datetime.now()

print(t_file.isocalendar().week == t_now.isocalendar().week)
# or print(t_file.isocalendar()[1]== t_now.isocalendar()[1])

# to compare the year as well, use e.g.
print(t_file.isocalendar()[:2] == t_now.isocalendar()[:2])

ISO 年由 52 或 53 个整周组成,其中一周从星期一开始,到星期日结束。 ISO 年的第一周是包含星期四的一年中的第一个(公历)日历周。这称为第 1 周,该星期四的 ISO 年与其公历年相同。

【讨论】:

  • .week 位对我不起作用,我得到AttributeError: 'tuple' object has no attribute 'week',但我可以使用 [1] 代替。比较年份和星期还是不错的!这给了我我需要的东西:)
  • 另外,导入时区有什么作用吗?
  • @EmiOB 您可以设置一个时区(对于令人困惑的导入感到抱歉),但是我认为这并不重要,因为您为两个 datetime 对象设置了相同的值。在我的示例中,我使用的是原始日期时间(未设置 tz),因此两者都是您机器的本地时间。
猜你喜欢
  • 2011-03-27
  • 2012-02-27
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多