目录
- datetime标准库 有四个主要的模块:
- 1)datetime 中的 datetime常用方法。
- 2)datetime 中的 timedelta 时间加减。
- 3)把 datetime 类型转为固定格式的字符串
- 4)把 固定格式的字符表示的日期,转为日期格式。
- time 标准库
- 时间日期格式化输出
- 先是 datetime 模块的格式化
- 再是 time 模块的格式化
datetime标准库 有四个主要的模块:
1• datetime 处理日期和时间同时出现的情况。
2• date 处理年、月、日。
3• time 处理时、分、秒和分数。
4• timedelta 处理日期和/ 或时间间隔。
1)datetime 中的 datetime常用方法。
from datetime import datetime
utc_now = datetime.utcnow() # 获取当前的UTC时间。
now = datetime.now() # 获取当前的本地时间。
now.month # 提取月份,为 int 型。
now.day # 提取日, 为 int 型。
now.hour # 提取时钟,为 int 型。
now.minute # 提取分钟,为 int 型。
now.second # 提取秒钟,为 int 型。
now.microsecond # 提取微秒,为 int 型。
now.date() # 提取日期 年月日。为 <class 'datetime.date'> 格式
now.time() # 提取时间 时分秒。为 <class 'datetime.time'> 格式
datetime.combine(now.date(), now.time() ) # 把提取出来的“日期”和“时间”重新合并。
now_stamp = now.timestamp() # 把日期对象转化为时间戳。
now = datetime.fromtimestamp(now_stamp) # 把时间戳转化为本地的日期对象。
utc_now = datetime.utcfromtimestamp(now_stamp) # 把时间戳转化为UTC的日期对象。
now.isoformat() # 把日期对象转化为“字符串”。变为:'2019-07-17T23:20:16.716957'
datetime.ctime(now) # 把日期对象转化为“字符串”。变为:‘Wed Jul 17 23:17:52 2019’
>>> some_date = datetime(2019,6,26,22,15,30) # 根据提供的数据生成特定的日期。
# 参数最少为三个“年月日”,
# 最多8个,第七个为 为秒,第八个为时区对象。
>>> some_date
datetime.datetime(2019, 6, 26, 22, 15, 30)
datetime 中的date 和 time 模块可以类似看成是 datetime 的拆分。
2)datetime 中的 timedelta 时间加减。
>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2019, 6, 26, 21, 44, 48, 989626)
>>> add_hours = timedelta(hours=2) # 增加2小时
>>> now + add_hours
datetime.datetime(2019, 6, 26, 23, 44, 48, 989626) # 从21时,变为23时。
>>> reduce_time = timedelta(days=-1, hours=-3) # 减1天,3小时。
>>> now + reduce_time
datetime.datetime(2019, 6, 25, 18, 44, 48, 989626)
Tip小技巧: datetime 也可以直接相减 获得 timedelta。
3)把 datetime 类型转为固定格式的字符串
见下方的 时间日期 格式化 内容
4)把 固定格式的字符表示的日期,转为日期格式。
用 strptime(date_string, format) 方法。
第一个参数为 日期字符串,第二个参数为与之对应的匹配格式。
import datetime
t = '2019/12/25 19:48:0'
tt = datetime.datetime.strptime(t, "%Y/%m/%d %H:%M:%S")
注:用 datetime.fromisoformat()方法,可以把由isoformat()生成的字符串格式转为对应的日期格式。
详细资料见下方的日期格式化内容。
time 标准库
不同于 datetime 里的 time 模块。
>>> import time
>>> now = time.time() #获取当前的时间戳(时间纪元)
>>> now
1561557399.6905515
>>> time.ctime(now) # 把时间戳转化为字符串。
'Wed Jun 26 21:56:39 2019'
>>>now_local = time.localtime(now) # 把时间戳转化为当地系统时间。
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=21, tm_min=56, tm_sec=39,
tm_wday=2, tm_yday=177, tm_isdst=0)
>>> time.gmtime(now) # 把时间戳转化为UTC时间。
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=13, tm_min=56, tm_sec=39,
tm_wday=2, tm_yday=177, tm_isdst=0)
>>> time.mktime(now_loacl) # 把 time.struct_time 日期转为 时间戳。
1561557399.0
time.ctime( ),time.localtime( ),time.gmtime( )
这三个方法如果不带参数,那么参数默认为当前的时间。
其中 time.struct_time元组中的:
tm_wday 为一周中的第几天,0到6 (0是周一)。
tm_yday 为一年中的第几天。
tm_isdst :1 表示时间是夏令时,0 表示非夏令时,-1 表示时间不确定是否是夏令时。
time.mktime() 的参数其实也可以自己构造,只要传入一个含有9个元素的元组就行,
例如:time.mktime((2019,6,26,21,56,39,0,0,0)) 最后三个参数可以全为0。
时间日期格式化输出
strftime() 把时间日期转化为字符串:
先是 datetime 模块的格式化
>>> from datetime import datetime
>>> a = datetime.now()
>>> a
datetime.datetime(2019, 6, 26, 23, 11, 3, 826789)
>>> a.strftime('%Y-%m-%d, %H-%M-%S') # 用 strftime() 把 日期格式转为自定义的格式输出。
'2019-06-26, 23-11-03'
再是 time 模块的格式化
>>> import time
>>> a = time.localtime()
>>> a
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=26, tm_hour=23, tm_min=15, tm_sec=33, tm_wday=2, tm_yday=177, tm_isdst=0)
>>> time.strftime('%Y-%m-%d, %H-%M-%S', a) # 用 strftime() 把 日期格式转为自定义的格式输出。
'2019-06-26, 23-15-33'
注:格式化的自定义格式不能用汉字或汉字标点符号,即不能这样:strftime(’%Y年%m月%d日’)。否则会报错。