time和datetime
引题:引入time时间包: import time
引入datetime包:from datetime import datetime,timedelta (从datetime包引入datetime, timedelta,timedelta是时间加减类)
1.datetime.now()返回当前时间 datetime.datetime(2018, 10, 24, 15, 16, 19, 812042)对象。方便进行日期加减等处理。其中datetime(2018, 10, 24, 15, 16, 19, 812042)为类的初始化。
print(datetime.now())
输出:2018-10-24 15:11:35.642929
小数点后六位是微秒数
2.创建datetime对象
dt = datetime(2018, 10, 24, 15, 21, 00) # 年,月,日,时,分,秒
print(dt.year)
print(dt.month)
print(dt.day)
...
3.日期加减
场景:适用于判断活动截止日期;或者是定时任务。
print(datetime.now() + timedelta(days=1,hours=10))
# 2018-10-26 02:12:51.642983
print(datetime.now() + timedelta(days=-1,hours=-10))
# 2018-10-23 06:14:41.698277
4.格式化输出 strftime 和 format
格式类型:
‘2018-10-24 15:11:38.831910’
‘2018-10-24 15:11:38’
‘15:11:38’
‘2018.10.24 15:11:38’
‘2018/10/24 15/11/38’
…
print(datetime.now().strftime('%Y %m %d %H:%M:%S'))
# 格式为:2018 10 24 15:33:54
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
# 格式为:2018-10-24 15:34:41
5.时间戳转datetime对象
print(datetime.fromtimestamp(1540367312))
6.字符串转时间对象
dtstr = '2018-10-06T09:25:03.401Z' # .40IZ毫秒
dt = datetime.strptime(dtstr,'%Y-%m-%dT%H:%M:%S.%fZ')
print(dt)
time包
1.生成当前时间的时间戳 time()
时间戳 timestamp:当前时间减去 原始自定义的标准时间(1970-1-1 0:0:0)的秒数。把时间量化成数字,比较时间先后顺序,计算转换有优势。缺点可读性差,默认长度只能表示到2038年。
print(time.time()) # 1540367312.0024965 秒(当前时间的时间戳,点后面的是毫秒,分秒,微秒)
2.生成本地时间 GTM+8 (北京时间) zh(中国)
格林尼治时间,时区http://wenku.todgo.com/zhiyejiaoyu/8891967b7fc8.html
场景:网站的用户分布世界各地,放了一个双11促销活动,注意考虑时区问题。
print(time.localtime())
# time.struct_time(tm_year=2018, tm_mon=10, tm_mday=24, tm_hour=16, tm_min=0, tm_sec=31, tm_wday=2, tm_yday=297, tm_isdst=0)
3.格式化时间(’%Y-%m-%d %H:%M:%S’和datetime包相同)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) # 2018-10-24 16:06:10
4.字符串转time的结构
tmobj = time.strptime('2018-10-06T09:25:03.401Z','%Y-%m-%dT%H:%M:%S.%fZ')
# strptime(),第一个参数为转化的时间,第二个参数为转化的时间规格。
print(tmobj)
5.从time结构对象生成数字时间戳 make
print(time.mktime(tmobj))
6.time.sleep() 场景:操作温湿度传感器
import time
while True:
print('hello world')
time.sleep(5)
# sleep() 参数为秒数