版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39591494/article/details/84076899
Python_自由管理时间
编程中时间的使用场景
- 文件属性
- 数据库
- 页面UI显示
- 定时
- 日志
一、时间戳
1.1、时间戳相关的概念
时间戳是指格林威治时间1970年01月01日00时00分00秒
(北京时间1970年01月01日08时00分00秒
)起至现在的总秒数
。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。
自建时间戳不具备法律效力
可信时间戳即由国家法定时间源来负责保障时间的授时和守时监测
,任何机构包括时间戳中心自己不能对时间进行修改以保障时间的权威,只有这样产生的时间戳才具有法律效力。
1.2、时区(Time Zone)
世界各地区与国家经度不同,地方时也有所不同。正式的时区划分,其中包括24个时区,每一时区由一个英文字母表示。地球是自西向东自转,东边比西边先看到太阳,东边的时间也比西边的早。东边时刻与西边时刻的差值不仅要以时计,而且还要以分和秒来计算,这给人们带来不便。为了克服时间上的混乱,1884年在华盛顿召开的一次国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。规定英国(格林尼治天文台旧址)为中时区(零时区)、东1-12区,西1-12区。
二、代码中的时间
- 时间戳(timestamp):1473525444 1525404023
- 时间字符串(Format String):2015-02-14 10:25:00
- 结构化的时间(struct_time):(year=2018, month=5, day=1, hour=16, min=37, sec=6)
三、在Python中常用的时间模块有哪些?
- time
- datetime
- python-dateutil (pip install) 安装
3.1、常用的操作
- 时间各种格式的表示
- 时间的加减运算
四、时间模块的引用
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.time())
>>>1542213744.0470088
导入time库,其中里面有一个方法叫做,time.time() 返回的是时间戳.
4.1、通过时间戳对运行代码进行时间计算
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
class Yankerp_time():
def __init__(self):
self.date = time.time()
def your_name(self):
Your_name = input("Please input your name:")
Your_pass = input("Please input your age:")
stop_time = time.time()
self.result(stop_time)
def result(self, result_time):
print(f"运行代码结束,用时时间为{result_time - self.date}秒")
Time = Yankerp_time()
Time.your_name()
>>>
Please input your name:延凯
Please input your age:99
运行代码结束,用时时间为3.7180070877075195秒
4.2、使用time.sleep() 对代码运行时间进行控制
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
for i in range(5):
time.sleep(1)
print(i)
>>> # 在运行的过程当中每过一秒会输出一个数字。这个和Shell脚本中的Sleep是类似的。
0
--------> 一秒后
1
--------> 一秒后
2
--------> 一秒后
3
--------> 一秒后
4
4.3、结构化时间与时间戳的转换
结构化时间使用time.localtime()模块来使用如下:
print(time.localtime())
>>>
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=58, tm_sec=12, tm_wday=3, tm_yday=319, tm_isdst=0)
结构化时间转换为时间戳
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.time()) # 输出时间戳
print(time.localtime(time.time())) # 将时间戳转换为结构化时间
print(time.localtime(1542214796)) # 第二种方法.
>>>
1542214846.4004872
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=0, tm_sec=46, tm_wday=3, tm_yday=319, tm_isdst=0)
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=59, tm_sec=56, tm_wday=3, tm_yday=319, tm_isdst=0)
将结构化时间转换为时间戳
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.localtime())
print(time.mktime(time.localtime()))\
>>>
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=3, tm_sec=37, tm_wday=3, tm_yday=319, tm_isdst=0)
1542215017.0
Index Attribute Values
0 tm_year (for example, 1993)
1 tm_mon range [1, 12]
2 tm_mday range [1, 31]
3 tm_hour range [0, 23]
4 tm_min range [0, 59]
5 tm_sec range [0, 61]; see (2) in strftime() description
6 tm_wday range [0, 6], Monday is 0
7 tm_yday range [1, 366]
8 tm_isdst 0, 1 or -1; see below
N/A tm_zone abbreviation of timezone name
N/A tm_gmtoff offset east of UTC in seconds
4.4、结构化时间与字符串格式转换
time.strftime
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.strftime("%Y-%m-%d %X", time.localtime()))
>>>
2018-11-15 01:09:56
字符串格式时间转换为结构化时间
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.strftime("%Y-%m-%d %X", time.localtime()))
print(time.strptime("2018-11-15 01:09:56", "%Y-%m-%d %X"))
>>>
2018-11-15 01:11:13
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=9, tm_sec=56, tm_wday=3, tm_yday=319, tm_isdst=-1)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
print(time.strftime("%Y-%m-%d %X", time.localtime(time.time())))
print(time.strptime("2018-11-15 01:13:57", "%Y-%m-%d %X"))
>>>
2018-11-15 01:14:32
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=1, tm_min=13, tm_sec=57, tm_wday=3, tm_yday=319, tm_isdst=-1)