Datetime 模块

- 如果只关注日期 不关注 时分秒 可以用
datetime.date
- 如果只关注时分秒 不关注 年月日 可以用.
datetime.time
- 如果日期和时分秒都关注 就用
datetime.datetime
导入相应的datetime包
1 2 3 4 5 6 7 |
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) Type 'copyright', 'credits' or 'license' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.4.0 Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin import datetime |
datetime 能表示最大的年
1 2 |
datetime.MAXYEAR Out[4]: 9999 |
datetime 能表示最小的年
1 2 |
datetime.MINYEAR Out[6]: 1 |
获取今天的日期
1 2 3 |
today = datetime.date.today() today Out[9]: datetime.date(2019, 1, 9) |
获取今天的年
1 2 3 4 5 6 |
today.year Out[11]: 2019 today.month Out[12]: 1 today.day Out[13]: 9 |
以上是通过 today 属性获取的 年月日
查看今天是周几
1 2 |
today.weekday() Out[16]: 2 |
今天是周三,显示确是2,因为是从0开始的
1 2 3 4 |
today.isocalendar() Out[18]: (2019, 2, 3) today.isoweekday() Out[19]: 3 |
按照国际标准 今天是星期三
如何构造一个日期呢?
1 2 3 4 5 6 7 |
birthday = datetime.date(2018,10,10) birthday.year Out[23]: 2018 birthday.month Out[25]: 10 birthday.day Out[26]: 10 |
time 只关注 时分秒
1 2 3 |
t = datetime.time(10,12,30) t Out[29]: datetime.time(10, 12, 30) |
获取时分秒
1 2 3 4 5 6 |
t.hour Out[31]: 10 t.min Out[32]: datetime.time(0, 0) t.second Out[33]: 30 |
既关注 年月日 又关注时分秒
1 2 3 4 5 6 7 8 9 10 11 |
now = datetime.datetime.now() now Out[36]: datetime.datetime(2019, 1, 9, 15, 16, 32, 943098) now.day Out[37]: 9 now.second Out[38]: 32 now.year Out[39]: 2019 now.microsecond Out[40]: 943098 |
构造年月日 时分秒
1 2 3 |
tt = datetime.datetime(2018,10,10,2,10,30) tt.day Out[43]: 10 |
时间格式化
字符串转日期时间
datetime.datetime.strptime("str",'时间格式')
strptime 字符串 parse 解析 时间
1 2 3 4 5 6 |
s = "2018-10-20" type(s) Out[6]: str t = datetime.datetime.strptime(s,"%Y-%m-%d") t Out[8]: datetime.datetime(2018, 10, 20, 0, 0) |
日期时间 转 字符串
datetime.datetime.strftime('时间格式')
strftime str 从from time
1 2 3 |
now = datetime.datetime.now() now.strftime('%Y-%m-%d') Out[11]: '2019-01-09' |
常用的时间占位符
1 2 3 4 5 6 7 8 9 |
1. %Y 四位年份 2. %y 两位年份 3. %m 两位月份 4. %d 两位日期 5. %H 两位小时 6. %M 两位分钟 7. %S 两位秒 8. %f 微妙 9. %w 星期 0,。。。6 |
Timedelta 时间跨度处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) Type 'copyright', 'credits' or 'license' for more information IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.4.0 Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin import datetime d = datetime.datetime(2018,10,10,2,10,30) birthdate = datetime.datetime(2016,11,12,10,2,10) d -birthdate Out[5]: datetime.timedelta(696, 58100) type(d) Out[6]: datetime.datetime diff = d -birthdate diff.days Out[8]: 696 diff.min Out[9]: datetime.timedelta(-999999999) diff.total_seconds() Out[10]: 60192500.0 diff.seconds Out[11]: 58100 d Out[12]: datetime.datetime(2018, 10, 10, 2, 10, 30) |
timedelta
1 2 |
d + datetime.timedelta(days=100) Out[14]: datetime.datetime(2019, 1, 18, 2, 10, 30) |
如果是减去一百天呢?
1 2 3 4 |
d + datetime.timedelta(days=-100) Out[16]: datetime.datetime(2018, 7, 2, 2, 10, 30) d Out[17]: datetime.datetime(2018, 10, 10, 2, 10, 30) |
如果加上 2000 秒呢
1 2 |
d + datetime.timedelta(seconds=2000) Out[19]: datetime.datetime(2018, 10, 10, 2, 43, 50) |
可以加上小时
1 2 |
d + datetime.timedelta(hours=100) Out[21]: datetime.datetime(2018, 10, 14, 6, 10, 30) |
时间戳 转时间
1 |
datetime.fromtimestamp("时间戳") |
