【问题标题】:Python retrieve DayOfWeek as integerPython 将 DayOfWeek 检索为整数
【发布时间】:2014-11-24 13:45:36
【问题描述】:

我需要将星期几作为整数。

如果我在一个月中的某天使用以下mydate.day,我想在工作日也这样做。

我试过mydate.weekday 但这并没有给我整数(0 代表星期日,6 代表星期六)。

有什么建议吗?

【问题讨论】:

  • 您是在使用某个库还是您自己编写了这个类?如果是后者,我们可以看看你是如何定义你的类的吗?
  • 导入日期时间 // mydate = datetime.datetime.strptime('2005-01-01', '%Y-%m-%d')
  • 你能告诉我们mydate.weekday()返回吗?假设mydatedatetime.datetime 那么它应该可以工作......参考docs.python.org/2/library/datetime.html#datetime.date.weekday
  • mydate 来自哪个包?

标签: python python-datetime


【解决方案1】:

如果您使用datetime.datetime,请使用datetime.datetime.weekday method

>>> d = datetime.datetime.now()
>>> d
datetime.datetime(2014, 11, 24, 22, 47, 3, 80000)
>>> d.weekday()  # Monday
0
>>> (d.weekday() + 1) % 7
1

您需要 (... + 1) % 7 因为该方法返回 0 表示周一,6 表示周日。

更新

您也可以使用datetime.datetime.isoweekday,返回 1 表示周一,7 表示周日。

>>> d.isoweekday() % 7
1

【讨论】:

  • 您可能还会发现 docs.python.org/2/library/… 很有用 - 它提供 Monday=1, ..., Sunday=7。
  • 我错过了 () -- mydate.weekday 必须是 mydate.weekday() 谢谢,几分钟后会接受
  • @TomDalton,感谢您的评论。我更新了答案以包含isoweekday
  • @phicon,你能更新你的问题吗? 0 for sunday to 6 for monday 对我来说没有意义。 (你的意思是星期六 6 点吗?)
【解决方案2】:

你的措辞让我有点困惑:

(0 代表星期日到 6 代表星期一) # 星期一是 6 号怎么办?

但我想知道你是否想要isoweekday

>>> from datetime import datetime
>>> d = datetime.now()
>>> d.isoweekday()
1                                 # Monday

编辑

鉴于您希望周日为 0,您应该使用 falsetru's answer(编辑后):

>>> d.isoweekday() % 7

或者在代码中的其他地方简单地将星期日转换为 0。

【讨论】:

  • 对不起,我的意思是星期一 1 和星期六 6。我的错
  • @phicon 不用担心。很高兴你找到了答案。 falsetru 的回答很好(并且得到了我的 +1)。
【解决方案3】:

Python 使用 0 表示星期一。请参阅weekday 文档。

import datetime

now = datetime.datetime(2014, 11, 23)
print now
print now.weekday()

这是星期天,所以打印出来:

2014-11-23 00:00:00
6

这是一个星期一的例子:

import datetime

now = datetime.datetime.now()
print now
print now.weekday()

这是星期一,所以打印出来:

2014-11-24 07:47:19.827000
0

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多