有了python,我怎样才能在星期三而不是星期天或星期一开始我的周开始?

时间:2016-10-06 15:57:41

标签: python python-3.x

我正在使用gmtime, strftime and datetime.

为了给出上下文我正在设置一个通话时间表,并且允许人们轻松切换人们的通话时间表我写了一个脚本来更改xml文件来实现这一点。为了让每个随叫随到的人都更容易,我设置了脚本,以便您可以询问特定日期的周数。大多数内置功能使用星期日或星期一作为开始日期,这不是我需要的。

有问题的功能:

我知道%U周日开始,我只需要一个解决方案,以便计算它在星期三开始。

`#option 2
def getWeek():
    print("\n\n")
    date = input("Enter the date you want the week number of (MM DD YYYY): ")
    if(len(date) != 10):
        print("You typed it in wrong. Try it again.")
        getWeek()
    else:
        d = time.strptime(date, "%m %d %Y")
        print(strftime("%U" + 2, d))`

1 个答案:

答案 0 :(得分:1)

为什么不亲自手动计算一周# 基本算法:

  • 获取当年的最新日期
  • 转回最近的星期三(或任何你想要的日子)
  • 除以7 + 1 =周#(假设第一个部分周为0)

在代码中:

>>> wednesday = 3    # sunday = 0, monday = 1, etc.
>>> week_no = lambda d: (d.tm_yday - (d.tm_wday-wednesday)%7) // 7 + 1
>>> week_no(time.strptime("10 06 2016", "%m %d %Y")) # Thursday
41
>>> week_no(time.strptime("10 04 2016", "%m %d %Y")) # Tuesday
40

完整性检查:

>>> time.strftime("%U", time.strptime("10 06 2016", "%m %d %Y"))
'40'
>>> time.strftime("%U", time.strptime("10 04 2016", "%m %d %Y"))
'40'