Python常用内建模块(datetime)

来源:互联网 发布:苹果5如何用移动4g网络 编辑:程序博客网 时间:2024/05/23 19:45

一、思维脑图

这里写图片描述

二、datetime模块介绍

datetime是Python处理日期和时间的标准库。

1)获取当前日期和时间:

from datetime import datetimenow = datetime.now()               # 获取当前datetimeprint(now)注意:from datetime import datetime表示的是导入datetime模块中的datetime类。如果,仅仅只是import datetime,那么在下面的编码过程中则需要写:now = datatime.datetime.now(),略显麻烦!

运行结果如下:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.py2017-12-17 16:31:25.362610Process finished with exit code 0

##通过这条命令我们可以知道now的类型为: datatime

print(type(now))    

运行结果如下:

<class 'datetime.datetime'>

2)获取指定日期和时间

from datetime import datetimedt = datetime(2017,12,12,23,00)print(dt)2017-12-12 23:00:00注意:在使用datetime进行构造实例时,要遵循特定的规则: | Data and other attributes defined here: |  |  max = datetime.datetime(9999, 12, 31, 23, 59, 59, 999999) |   |  min = datetime.datetime(1, 1, 1, 0, 0) |   |  resolution = datetime.timedelta(0, 0, 1)

3)datetime转换为timestamp

插话:
在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。
timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的

转换的时候,直接调用timestamp()方法即可

from datetime import datetimedt = datetime(2017,12,17,18,00)   # 用指定日期时间创建datetimeprint(dt.timestamp())             # 把datetime转换为timestamp

4)timestamp转换为datetime

from datetime import datetimet = 1513504800.0             #在这里,我们直接把上面的timestamp拿下来print(datetime.fromtimestamp(t)) 

运行结果如下:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.py2017-12-17 18:00:00Process finished with exit code 0

5)timestamp转换到UTC标准时区的时间

from datetime import datetimet = 1513504800.0print(datetime.fromtimestamp(t))       # 本地时间print(datetime.utcfromtimestamp(t))    # UTC时间

运行结果:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.py2017-12-17 18:00:00     ##本地时间是指当前操作系统设定的时区2017-12-17 10:00:00     ##格林威治标准时间与本地时间差了8小时,可以反推出本地在地理上位于东八区Process finished with exit code 0

6)str转换为datetime

from datetime import datetimea=input("time:")print(type(a))cday = datetime.strptime(a, '%Y-%m-%d %H:%M:%S')print(cday)

运行结果:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.pytime:2017-12-17 16:12:26<class 'str'>2017-12-17 16:12:26Process finished with exit code 0

7)datetime转换为str

from datetime import datetimenow = datetime.now()print("转换前时间的类型为:")print(type(now))strnow = now.strftime('%a, %b %d, %H:%M')print("转换后时间的类型为:")print(type(strnow))print("结果展示:")print(strnow)

运行结果:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.py转换前时间的类型为:<class 'datetime.datetime'>转换后时间的类型为:<class 'str'>结果展示:Sun, Dec 17, 17:05

8)datetime加减

from datetime import datetime, timedeltanow = datetime.now()nowOut[13]: datetime.datetime(2017, 12, 17, 17, 8, 28, 775024)now + timedelta(hours=10)Out[14]: datetime.datetime(2017, 12, 18, 3, 8, 28, 775024)nowOut[15]: datetime.datetime(2017, 12, 17, 17, 8, 28, 775024)now - timedelta(days=1)Out[16]: datetime.datetime(2017, 12, 16, 17, 8, 28, 775024)nowOut[17]: datetime.datetime(2017, 12, 17, 17, 8, 28, 775024)

9)本地时间转换为UTC时间
本地时间是指系统设定时区的时间,例如北京时间是UTC+8:00时区的时间,而UTC时间指UTC+0:00时区的时间。
一个datetime类型有一个时区属性tzinfo,但是默认为None,所以无法区分这个datetime到底是哪个时区,除非强行给datetime设置一个时区:

from datetime import datetime, timedelta, timezonetz_utc_8 = timezone(timedelta(hours=8)) now = datetime.now()nowOut[23]: datetime.datetime(2017, 12, 17, 17, 14, 19, 101426)dt = now.replace(tzinfo=tz_utc_8)dtOut[25]: datetime.datetime(2017, 12, 17, 17, 14, 19, 101426, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))

10)时区转换
先通过utcnow()拿到当前的UTC时间,再转换为任意时区的时间

from datetime import datetime, timedelta, timezone# 拿到UTC时间,并强制设置时区为UTC+0:00:utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)print(utc_dt)# astimezone()将转换时区为北京时间:bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))print(bj_dt)# astimezone()将转换时区为东京时间:tokyo_dt = utc_dt.astimezone(timezone(timedelta(hours=9)))print(tokyo_dt)# astimezone()将bj_dt转换时区为东京时间:tokyo_dt2 = bj_dt.astimezone(timezone(timedelta(hours=9)))print(tokyo_dt2)

运行结果:

"C:\Program Files\Python36\python.exe" C:/Users/Administrator/PycharmProjects/Python全网练习/常用内置模块.py2017-12-17 09:19:57.707928+00:002017-12-17 17:19:57.707928+08:002017-12-17 18:19:57.707928+09:002017-12-17 18:19:57.707928+09:00Process finished with exit code 0
注意:    时区转换的关键在于,拿到一个datetime时,要获知其正确的时区,然后强制设置时区,作为基准时间。    利用带时区的datetime,通过astimezone()方法,可以转换到任意时区。
原创粉丝点击