【发布时间】:2018-04-13 03:33:56
【问题描述】:
我正在尝试查找自定义日期格式,例如 YYYYW。减去周数后为 201620。
到目前为止,我已经能够使用以下代码将像 YYYYW 这样的日期字符串转换为日期;
from datetime import datetime
myDate = "201642"
year = myDate[:4]
week = myDate[-2:]
day = '1'
myDate = year + " " + week + " " + day
print(myDate)
date = datetime.strptime(myDate, "%Y %W %w")
print(date)
但我无法找到一种可以减去例如的方法。从 201642 开始 43 周,得到类似 201552 的结果。
编辑 1:使用 cmets 的建议,这是解决方案。
从日期时间导入日期时间 从日期时间导入时间增量
myDate = "201642"
year = myDate[:4]
week = myDate[-2:]
day = '1'
myDate = year + " " + week + " " + day
print(myDate)
date = datetime.strptime(myDate, "%Y %W %w")
print(date)
new_date = date - timedelta(weeks=42)
str_new_date = datetime.strftime(new_date, '%Y%W')
print(str_new_date)
【问题讨论】:
-
提示:一年有 52 周。只需使用数学。
-
我确实考虑过这一点,但不确定它是否适用于闰年,因为它有 52.2 周
-
您的代码是否必须处理小数周?您输入的整数年和周似乎暗示没有。
-
好点,它还不是分数
-
你有一个
datetime对象。从同一模块导入timedelta类型。然后你可以做date - timedelta(weeks=43),然后用strftime转换回你的字符串格式,你就完成了。 (尽管您可能想要使用date对象而不是datetime。)
标签: python python-3.x python-2.7