我想了解以下内容:给定一个日期(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(因为现在是星期五)
当前回答
如果您是中国用户,您可以使用此软件包:https://github.com/LKI/chinese-calendar
import datetime
# 判断 2018年4月30号 是不是节假日
from chinese_calendar import is_holiday, is_workday
april_last = datetime.date(2018, 4, 30)
assert is_workday(april_last) is False
assert is_holiday(april_last) is True
# 或者在判断的同时,获取节日名
import chinese_calendar as calendar # 也可以这样 import
on_holiday, holiday_name = calendar.get_holiday_detail(april_last)
assert on_holiday is True
assert holiday_name == calendar.Holiday.labour_day.value
# 还能判断法定节假日是不是调休
import chinese_calendar
assert chinese_calendar.is_in_lieu(datetime.date(2006, 2, 1)) is False
assert chinese_calendar.is_in_lieu(datetime.date(2006, 2, 2)) is True
其他回答
使用weekday():
>>> import datetime
>>> datetime.datetime.today()
datetime.datetime(2012, 3, 23, 23, 24, 55, 173504)
>>> datetime.datetime.today().weekday()
4
根据文档:
以整数形式返回星期几,其中星期一为0,星期日为6。
如果您有理由避免使用datetime模块,那么此函数将起作用。
注:从儒略历到公历的变化被认为发生在1582年。如果您感兴趣的日历并非如此,那么如果年份>1582,则相应地更改行。
def dow(year,month,day):
""" day of week, Sunday = 1, Saturday = 7
http://en.wikipedia.org/wiki/Zeller%27s_congruence """
m, q = month, day
if m == 1:
m = 13
year -= 1
elif m == 2:
m = 14
year -= 1
K = year % 100
J = year // 100
f = (q + int(13*(m + 1)/5.0) + K + int(K/4.0))
fg = f + int(J/4.0) - 2 * J
fj = f + 5 - J
if year > 1582:
h = fg % 7
else:
h = fj % 7
if h == 0:
h = 7
return h
假设您有timeStamp:字符串变量YYYY-MM-DD HH:MM:SS
步骤1:使用blow代码将其转换为dateTime函数。。。
df['timeStamp'] = pd.to_datetime(df['timeStamp'])
步骤2:现在您可以提取所有必需的功能,如下所示,这将为每个字段创建新的列-小时、月、星期、年、日期
df['Hour'] = df['timeStamp'].apply(lambda time: time.hour)
df['Month'] = df['timeStamp'].apply(lambda time: time.month)
df['Day of Week'] = df['timeStamp'].apply(lambda time: time.dayofweek)
df['Year'] = df['timeStamp'].apply(lambda t: t.year)
df['Date'] = df['timeStamp'].apply(lambda t: t.day)
一个简单、直接但尚未提及的选项:
import datetime
...
givenDateObj = datetime.date(2017, 10, 20)
weekday = givenDateObj.isocalendar()[2] # 5
weeknumber = givenDateObj.isocalendar()[1] # 42
如果你想用英语约会:
from datetime import datetime
datetime.today().strftime('%A')
'Wednesday'
阅读更多信息:https://docs.python.org/3/library/datetime.html#strftime-结构时间行为