记录关于python及时间的知识,不定时更新....
-------------------------------------------------------------------------------------
什么是时间类型?
时间类型
对python而言,时间类型是datetime模块中datetime类的实例。
我们可以运算这个实例,得到我们希望的数据.
例如django的ORM可以直接把这个类型作为参数存入数据库
通过加减时间增量类型得到一个未来的或者历史的时间
从时间戳得到一个时间类型
...
-------------------------------------------------------------------------------------
什么是时间增量类型?
时间增量类型
时间增量类型是datetime.timedelta类的实例
它代表的是时间长度,例如5秒钟,1分钟,1天,5分3秒.而不是像5点,3月2日这样的时间点.
时间类型-时间增量类型=时间类型
时间类型-时间类型=时间增量类型
对应举例:
(5月2日 5点4分) 减去 (1天) 等于(5月1日 5点4分)
(5月2日 5点4分) 减去 (5月1日 5点4分) 等于(1天)
-------------------------------------------------------------------------------------
什么是时间戳?
时间戳是一串float类型的数字
它代表从象征计算机诞生的时间点到某一个时间点的秒数。
计算机诞生象征时间:1970年01月01日00时00分00秒
-------------------------------------------------------------------------------------
怎么获得当前时间戳?
通过time模块的time方法
import time
now_timestamp = time.time()
print(now_timestamp) # 1548554022.7956614
print(type(now_timestamp)) #
-------------------------------------------------------------------------------------
怎么把时间戳转化为时间格式?
代码里出现的未定义变量假设来自上文同名变量(下同)
import datetime
now_time_obj = datetime.datetime.fromtimestamp(now_timestamp)
print(now_time_obj) # 2019-01-27 10:30:04.136475
print(type(now_time_obj)) #
-------------------------------------------------------------------------------------
怎么把时间格式转化为时间戳?
now_time_tuple=now_time_obj.timetuple()
print(now_time_tuple) # time.struct_time(tm_year=2019,......, tm_isdst=-1)
print(type(now_time_tuple)) #
now_timestamp=time.mktime(now_time_tuple)
print(now_timestamp) # 1548554593.0
print(type(now_timestamp)) #
-------------------------------------------------------------------------------------
怎么使用时间增量?
print('-' * 30)
now_time_obj=datetime.datetime.now()
print(now_time_obj)
timedelta_obj = datetime.timedelta(minutes=5, hours=1,)
print(timedelta_obj)
print(type(timedelta_obj))
new_time_obj=now_time_obj+timedelta_obj
print(new_time_obj)
print('-' * 30)
结果:
可以看到一个时间类型加上一个时间增量得到了一个新的时间类型
相应的,两个时间类型进行减运算亦会得到一个时间增量类型的实例。
-------------------------------------------------------------------------------------
怎么把时间类型转化为自定义的字符串?
now_time_str_1 = now_time_obj.strftime('%Y年%m月%d日%H点%M分%S秒')
print(now_time_str_1) # 2019年01月27日10点17分08秒
now_time_str_2 = datetime.datetime.strftime(now_time_obj,'%Y年%m月%d日%H点%M分%S秒')
print(now_time_str_2) # 2019年01月27日10点17分08秒
可以看到,通过局部的方法以及全局的方法都可以做到这一点.
-------------------------------------------------------------------------------------
怎么把自定义的字符串转化为时间类型?
time_obj=datetime.datetime.strptime(now_time_str_2, '%Y年%m月%d日%H点%M分%S秒')
print(time_obj) # 2019-01-27 10:20:56
print(type(time_obj)) #
-------------------------------------------------------------------------------------
怎么得到今天的时间?
today=datetime.date.today()
怎么得到今天0点的时间对象
today_start=datetime.datetime(today.year, today.month, today.day, 0, 0, 0)