【发布时间】:2017-11-19 09:58:45
【问题描述】:
我不知道如何用年、日和周来返回月份。现在我只是想开发一个可以做到这一点的 Python 脚本。完成此脚本后的目标是将其用于 Spark SQL 查询以查找月份,因为在我的数据中,我在每一行中都有一天、一年和一周。
到目前为止,我的 python 代码看起来像这样。此代码仅适用于我在 print(getmonth(2, 30 ,2018) 中返回 7 的语句。我尝试了其他日期,输出仅为“无”。我也尝试了变量,但没有成功。
import datetime
def month(day, week, year):
for month in range(1,13):
try:
date = datetime.datetime(year, month, day)
except ValueError:
iso_year, iso_weeknum, iso_weekday = date.isocalendar()
if iso_weeknum == week:
return date.month
print(getmonth(2, 30, 2018))
#iso_(year,weeknum,weekday) are the classes for ISO. Year is 1-9999, weeknum is 0-52 or 53, and weekday is 0-6
#isocaldenar is a tuple (year, week#, weekday)
【问题讨论】:
-
不应该是
def getmonth(day, week, year):还是print(month(28, 30, 2018))?您的代码也会为print(month(28, 30, 2018))返回None。 -
if仅在发生异常时才到达,您应该将其移至try块或将其取消缩进一级 -
@Deuce def getmonth(day,week, year) 也没有返回值
-
@Deuce 我明白了。它也应该被移动。
except块中应该只有pass或print("error")以满足语法规则。 -
我不明白输入,第 28 天和第 30 周怎么样?,一周是有意义的,因为它是一年中的第 30 周,但 28 却让我望而却步