【问题标题】:Generating birthdays生成生日
【发布时间】:2019-12-24 14:12:43
【问题描述】:

问题已解决,解决方法如下

【问题讨论】:

  • 您必须提供更多信息,例如使用哪种语言,例如它是 python 还是 excel 或使用 python 的 excel 自动化。还提供您尝试过的示例。
  • 为什么要这样做?你很可能有一个XY problem

标签: python excel automation date


【解决方案1】:

使用日期时间库首先创建您的开始日期,然后在第二天继续,直到您到达今天。

import datetime

d = datetime.date(1950, 1, 1)
end = datetime.date.today()
while d!=end:
    print(d)
    d = d + datetime.timedelta(days=1)

【讨论】:

  • 错字修复:e 在 while 循环中应该是 end
  • 您真的要检查完全相等吗?是否存在无法精确按天迭代的情况?
【解决方案2】:

使用python的日历模块。

import calendar

c = calendar.Calendar()
with open('dates.txt', 'w') as fp:
    for y in range(1950, 2020):
        for m in range(1, 13):
            for d in c.itermonthdays(y, m):
                if d:
                    fp.write(f'{d:0>2}-{m:0>2}-{y}\n')

【讨论】:

  • 为什么需要if d
  • 它将返回 d=0 对于当月无效的日子。它这样做是为了证明您是否正在创建物理日历的起点和终点。
  • 有趣(和令人惊讶)的行为。谢谢。
【解决方案3】:

这样的事情应该可以工作:

import datetime
import csv

today = datetime.date.today()
initial_date = datetime.date(1950, 1, 1)

l = []

while initial_date <= today:
    l.append(initial_date)
    initial_date += datetime.timedelta(days=1)

l = list(map(lambda x: x.strftime('%d-%m-%Y'), l))

with open('date.csv', 'w') as myfile:
    wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
    wr.writerow(l)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 2013-05-10
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2021-12-01
    • 2014-02-25
    相关资源
    最近更新 更多