我想了解以下内容:给定一个日期(datetime对象),一周中对应的日期是什么?
例如,星期天是第一天,星期一是第二天。。等等
然后如果输入的内容类似于今天的日期。
实例
>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday() # what I look for
产量可能是6(因为现在是星期五)
我想了解以下内容:给定一个日期(datetime对象),一周中对应的日期是什么?
例如,星期天是第一天,星期一是第二天。。等等
然后如果输入的内容类似于今天的日期。
实例
>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday() # what I look for
产量可能是6(因为现在是星期五)
当前回答
要让星期天1点到星期六7点,这是解决问题的最简单方法:
datetime.date.today().toordinal()%7 + 1
所有这些:
import datetime
today = datetime.date.today()
sunday = today - datetime.timedelta(today.weekday()+1)
for i in range(7):
tmp_date = sunday + datetime.timedelta(i)
print tmp_date.toordinal()%7 + 1, '==', tmp_date.strftime('%A')
输出:
1 == Sunday
2 == Monday
3 == Tuesday
4 == Wednesday
5 == Thursday
6 == Friday
7 == Saturday
其他回答
我们可以帮助熊猫:
import pandas as pd
如上所述,我们有:
datetime(2017, 10, 20)
如果在jupyter笔记本中执行这一行,我们将得到如下输出:
datetime.datetime(2017, 10, 20, 0, 0)
使用weekday()和weekday_name:
如果您希望工作日为整数格式,请使用:
pd.to_datetime(datetime(2017, 10, 20)).weekday()
输出将为:
4
如果你想把它作为一天的名字,比如星期天、星期一、星期五等,你可以使用:
pd.to_datetime(datetime(2017, 10, 20)).weekday_name
输出将为:
'星期五'
如果Pandas数据帧中有日期列,则:
现在假设您有一个panda数据帧,其日期列如下:pdExampleDataFrame['Dates'].head(5)
0 2010-04-01
1 2010-04-02
2 2010-04-03
3 2010-04-04
4 2010-04-05
Name: Dates, dtype: datetime64[ns]
现在,如果我们想知道工作日的名称,比如星期一、星期二。。等等,我们可以按如下方式使用.weekday_name:
pdExampleDataFrame.head(5)['Dates'].dt.weekday_name
输出将是:
0 Thursday
1 Friday
2 Saturday
3 Sunday
4 Monday
Name: Dates, dtype: object
如果我们希望从“日期”列中得到工作日的整数,那么我们可以使用:
pdExampleDataFrame.head(5)['Dates'].apply(lambda x: x.weekday())
输出将如下所示:
0 3
1 4
2 5
3 6
4 0
Name: Dates, dtype: int64
当星期一为0,星期日为6时,使用date.weekday()
or
date.isoweekday(),当周一是1,周日是7
如果您将日期作为字符串,那么使用panda的时间戳可能更容易
import pandas as pd
df = pd.Timestamp("2019-04-12")
print(df.dayofweek, df.weekday_name)
输出:
4 Friday
要让星期天1点到星期六7点,这是解决问题的最简单方法:
datetime.date.today().toordinal()%7 + 1
所有这些:
import datetime
today = datetime.date.today()
sunday = today - datetime.timedelta(today.weekday()+1)
for i in range(7):
tmp_date = sunday + datetime.timedelta(i)
print tmp_date.toordinal()%7 + 1, '==', tmp_date.strftime('%A')
输出:
1 == Sunday
2 == Monday
3 == Tuesday
4 == Wednesday
5 == Thursday
6 == Friday
7 == Saturday
这不需要每周的评论。我推荐这个代码~!
import datetime
DAY_OF_WEEK = {
"MONDAY": 0,
"TUESDAY": 1,
"WEDNESDAY": 2,
"THURSDAY": 3,
"FRIDAY": 4,
"SATURDAY": 5,
"SUNDAY": 6
}
def string_to_date(dt, format='%Y%m%d'):
return datetime.datetime.strptime(dt, format)
def date_to_string(date, format='%Y%m%d'):
return datetime.datetime.strftime(date, format)
def day_of_week(dt):
return string_to_date(dt).weekday()
dt = '20210101'
if day_of_week(dt) == DAY_OF_WEEK['SUNDAY']:
None