gpt4 book ai didi

python - 渲染文本日历

转载 作者:行者123 更新时间:2023-12-01 04:13:28 29 4
gpt4 key购买 nike

我有一个函数应该为日历构建标题,如下所示:

'周日周一周二周三周四周五周六'

需要一个 isoweekday('#Monday' 1, 2, 3, 4, 5, 6, 7 '#Sunday' 之一)。

这是代码:

@staticmethod
def _isoweekday_to_str(isoweekday):
isoweekday = isoweekday - 1
isoweekday = str(isoweekday)
x = datetime.strptime(isoweekday, '%w')
return x.strftime('%a')

TEXT_CAL_MONTH_WEEK_HEADER = ""

iter_isoweekday = week_start
for _ in range(0,7):
TEXT_CAL_MONTH_WEEK_HEADER += self._isoweekday_to_str(iter_isoweekday).rjust(TEXT_CAL_CELL_WIDTH, " ")

if iter_isoweekday != 7:
iter_isoweekday += 1
else:
iter_isoweekday = 1

当传入 4 作为周开始时,我得到的输出是:

'周一周一周一周一'

应该是:

'周四周五周六周日周一周二周三'

我真的真的不知道发生了什么。我认为这要么与变量的分配方式、字符串突变或日期时间库有关。

更新:看来 datetime.strptime 是问题所在。无论我传入什么,我都会返回 datetime(1900, 1, 1, 0, 0) ...,你猜对了,这是星期一。

帮忙?

最佳答案

您可以从 calendar module 获取本地化的星期几:

>>> import calendar
>>> list(calendar.day_name)
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

或者缩写名称,使用 calendar.day_abbr :

>>> ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']

参见the documentation如果您需要其他语言环境。

显然,该模块可以生成整个日历:

>>> print calendar.TextCalendar().formatmonth(2016, 1)
January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

关于python - 渲染文本日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606365/

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