Python日期
Python日期类是datetime模块的一部分。
Python日期
Python日期对象代表日历中的日期(年,月和日)。
第1年的1月1日称为第1天,第1年的1月2日称为第2天,依此类推。
我们可以使用以下工厂方法创建日期实例。
datetime.date(year, month, day)
所有参数都是强制性的,并且应为有效范围内的整数。
年份值应在1-9999范围内,月份应在1-12范围内,日期应在一年中给定月份的有效天数范围内。
如果参数形成无效日期,则将引发" ValueError"。
Python创建日期实例
我们可以从工厂方法创建日期实例。
from datetime import date d = date(2016, 12, 25) print(d)
输出:2016-12-25
也有一些创建日期实例的类方法。
创建今天的日期
d = date.today() print(d)
输出:2016-09-18
从时间戳创建日期
import time t = time.time() print(t) d = date.fromtimestamp(t) print(d) d = date.fromtimestamp(1537261418) print(d)
输出:
1537265122.553337 2016-09-18 2016-09-18
从序号创建日期
d = date.fromordinal(366) print(d)
输出:0002-01-01
来自ISO字符串的日期
Python 3.7中添加了一个新方法fromisoformat()
,以从ISO格式字符串创建日期实例。
输入字符串的格式应为" YYYY-MM-DD"。
# date from ISO string format, added in Python 3.7 d = date.fromisoformat('2016-09-19') print(d)
日期类别属性
print(date.min) print(date.max) print(date.resolution)
输出:
0001-01-01 9999-12-31 1 day, 0:00:00
日期实例属性
日期实例属性是只读的。
d = date.today() print(d.year) print(d.month) print(d.day)
输出:
2016 9 18
使用timedelta的日期运算
Date对象支持带有timedelta实例的算术运算符,以创建将来和过去的日期。
date_tomorrow = date.today() + timedelta(days=1) print(date_tomorrow) date_yesterday = date.today() - timedelta(days=1) print(date_yesterday) td = date_tomorrow - date_yesterday print(td) print(date_tomorrow > date_yesterday)
输出:
2016-09-19 2016-09-17 2 days, 0:00:00 True
日期实例方法
让我们看一些日期实例方法。
replace(year = self.year,month = self.month,day = self.day)
返回具有相同值的日期实例,除非通过关键字参数提供其新值。
today = date.today() print(today) new_date = today.replace(year=2017) print(new_date)
输出:
2016-09-18 2017-09-18
timetuple()
返回一个time.struct_time实例,与time.localtime()返回的实例相同。
print(today.timetuple())
输出:
time.struct_time(tm_year=2016, tm_mon=9, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=261, tm_isdst=-1)
请注意,小时,分钟和秒的值始终为0,DST标志始终为-1。
toordinal()
返回日期实例的序数值。
print(today.toordinal())
输出:736955
工作日()
以整数形式返回星期几,其中星期一为0,星期日为6。
print(today.weekday()) # 2016-09-18 is Tuesday
输出:1
isoweekday()
以整数返回星期几,其中星期一为1,星期日为7。
print(today.isoweekday())
输出:2
isocalendar()
返回一个元组(ISO年,ISO周号,ISO工作日)。
print(today.isocalendar())
输出:(2016,38,2)
isoformat()
返回以ISO 8601格式表示日期的字符串,即" YYYY-MM-DD"。
print(today.isoformat())
输出:2016-09-18
ctime()
返回表示日期实例的字符串。
print(today.ctime())
输出:Tue Sep 18 00:00:00 2016
Python日期转换为格式化字符串
我们可以使用strftime()函数将日期实例转换为具有指定格式的字符串。
print(today.strftime('%Y/%m/%d'))
输出:2016/09/18
Python将字符串转换为日期
我们可以使用datetime strptime()函数将字符串转换为datetime实例。
然后,我们可以使用其date()函数将其转换为日期实例。
from datetime import datetime dt = datetime.strptime('2016/09/18', '%Y/%m/%d').date() print(type(dt)) print(dt)
输出:
<class 'datetime.date'> 2016-09-18