Python日期

时间:2020-02-23 14:42:36  来源:igfitidea点击:

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