当前位置: 移动技术网 > IT编程>脚本编程>Python > python 时间合集 一

python 时间合集 一

2019年06月13日  | 移动技术网IT编程  | 我要评论

广告创意图片,上海别墅设计,赵宏烨


**以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨**
#### python中4种时间表示形式:1.格式化时间字符串 2.时间戳 3.时间元祖 4.时间对象
- string_time,格式化时间字符串是指**格式化输出指定输出参数的格式与相对位置的字符串参数**,与python中的format作用类似,常见的格式化时间字符串:**"%y-%m-%d %h:%m:%s %z,%a,%a,%b,%b,%c,%i,%p"**其他代码请看文档,c库strftime函数。

名称 | 含义 | 值 |
---|---|---
%y | 年 | 具体年份,例:2019
%m | 月 | 01-12
%d | 日 | 01-31
%h | 时 | 01-31
%m | 分 | 00,59
%s | 秒 | 00,61
%z | 时区 |
%a | 根据区域设置的缩写的工作日名称|
%a | 根据区域设置的完整工作日名称|
%b | 根据区域设置的缩写月份名|
%b | 根据区域设置的完整月份名称|
%c | 根据区域设置的适当日期和时间表示|
%i | 第几个小时(12小时制)| 01-12
%p | 语言环境| am或pm
吐槽一下官网注释秒的范围是0-59,实测0-61都可以

- timestamp,时间戳是指字符串或编码信息用于辨识记录下来的时间日期,维基百科解释的不容易懂,我的理解是**从1970年1月1日到现在过去了多少秒**。

- struct_time,时间元祖是**指包含9个特殊元素的元祖**,(tm_year,tm_mon,tm_mday,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst),详情见下表格

名称 | 含义 | 值 |
---|---|---
tm_year | 年 | 具体年份,例:2019
tm_mon | 月 | 1-12
tm_mday | 日 | 1-31
tm_hour | 时 | 1-23
tm_min | 分 | 0-59
tm_sec | 秒 | 0-61
tm_wday | 周 | 0-6(从周末开始)
tm_yday | 在一年中的第几天 | 1-666
tm_isdst | 是否为夏令时 | -1,0,1(能表示true和flase的值)
- time_object,时间对象是指**通过某些时间类生成的对象**,例如datetime。
#### python中两大时间模块:1.time 2.datetime

### 1.time
- 常量
- variables with simple values,值简单的变量
- altzone,-32400
- daylight,0
- timezone,-28800
- _struct_tm_items,11
- variables with complex values,值复杂的变量
- tzname 但是如果直接调用会得到一个乱码的值,看不懂,查阅资料后发现通过重新编码解码可以看到真实值,这里很感谢这个爱思考的博主,这里编码解码参考他的博客,这条博文在这里:https://www.cnblogs.com/luo630/p/9555684.html,里面讲的很详细
```python
>>> time.tzname[0].encode('latin-1').decode('gbk')
'中国标准时间'
>>> time.tzname[1].encode('latin-1').decode('gbk')
'中国夏令时'
```
- 方法:
- asctime:将时间元组转换为字符串,当没有传入参数时,调用localtime()返回的当前时间,参数类型:元祖,返回类型:字符串。例如:
```python
>>> import time
>>> time.asctime()
'tue jun 11 16:07:40 2019'
>>> time.asctime((2019,6,11,16,7,40,59,59,59)) # 这里必须要穿一个包含9个数字的元组,且年月日时分都必须符合时间逻辑,秒必须小于等于61,不知道为什么是61,后面三位逻辑暂时还没弄明白,但是跟前面对应的年月日有关
'thu jun 11 16:07:40 2019'
```
- clock:计时器函数,在进程结束后返回从开始到第一次调用该函数使用的时间,返回类型:浮点数。例如:
```python
>>> time.clock()
5e-07
>>> time.sleep(1)
>>> time.clock()
11.9833418
>>> time.sleep(10)
>>> time.clock()
35.1999596
```
- ctime:将时间戳转换为以本地时间为单位的字符串。相当于asctime(localtime(seconds))。当没有传入参数时,使用localtime()返回的当前时间。参数类型:时间戳,返回类型:字符串。例如:
```python
>>> time.ctime(1555555550)
'thu apr 18 10:45:50 2019'
>>> time.ctime()
'tue jun 11 17:08:44 2019'
```
- get_clock_info()



- gmtime:将时间戳转换为时间元祖,当没有传入参数时,返回当前世界标准时间的时间元祖。参数类型:时间戳,返回类型:元祖(但是查看源码只有一个pass)。例如:
```python
>>> time.gmtime(1555555550)
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=18, tm_hour=2, tm_min=45, tm_sec=50, tm_wday=3, tm_yday=108, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=11, tm_hour=9, tm_min=18, tm_sec=54, tm_wday=1, tm_yday=162, tm_isdst=0)
```

- localtime:与gmtime功能类似,但是返回的时间变成了当地时间。例如:
```python
>>> time.localtime(1555555550)
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=18, tm_hour=10, tm_min=45, tm_sec=50, tm_wday=3, tm_yday=108, tm_isdst=0)
>>> time.localtime()
time.struct_time(tm_year=2019, tm_mon=6, tm_mday=11, tm_hour=17, tm_min=28, tm_sec=34, tm_wday=1, tm_yday=162, tm_isdst=0)
```
- mktime:将时间元祖转化为时间戳,返回时间戳。参数类型:时间元祖(9个元素),返回类型:时间戳。例如:
```python
>>> time.mktime((2019,4,18,10,45,50,3,108,0))
1555555550.0
```
- monotonic: 一个单调的计时器,不能倒转。不知道从什么时候开始的,返回类型:浮点型。例如:
```python
>>> def func():
... print(time.monotonic())
... time.sleep(1)
...
>>> i = 0
>>> while i<5:
... func()
... i+=1
...
461875.89
461876.89
461877.89
461878.89
461879.89
```
- perf_counter:性能计数器用于基准测试。不服跑个分!返回类型:浮点型。例如:
```python
>>> time.perf_counter()
3674.2299851
>>> time.perf_counter()
3675.2086447
>>> time.perf_counter()
3675.9990329
```
- process_time:用于分析的进程时间:内核和用户空间cpu时间的总和。返回类型:浮点型。例如:
```python
>>> time.process_time()
4.40625
```

- sleep:将执行延迟数秒。参数类型:int or float ,返回类型:无,这就不演示了...浪费时间


- strftime:
```
根据格式规范将时间元组转换为字符串。有关格式化代码,请参阅库参考手册。当没有传入参数时,使用localtime()返回的当前时间。传入参数:配对字符串,时间元祖(与字符串配对),返回参数:时间字符串
```
例:
```python
# 根据前面的格式化字符串来生成对应时间字符串
>>> time.strftime("%y-%m-%d %h:%m:%s", (2019, 1, 1, 1, 1, 1, 1, 13, 0))
'2019-01-01 01:01:01'
>>> time.strftime("%y-%m-%d %h:%m:%s %i", (2019, 1, 1, 1, 1, 1, 1, 13, 0))
'2019-01-01 01:01:01 01'
>>> time.strftime("%y-%m-%d %h:%m:%s %z,%a,%a,%b,%b,%c,%i,%p", (2019, 1, 1, 1, 1, 1, 1, 13, 0))
'2019-01-01 01:01:01 +0800,tue,tuesday,jan,january,tue jan 1 01:01:01 2019,01,am'
```

- strptime:
```
根据格式规范将字符串解析为时间元组。有关格式化代码,请参阅库参考手册(与strftime ())。传入参数:时间字符串,配对字符串。返回参数:时间元祖
```
例:
```python
>>> time.strptime("2019-01-01 01:01:02", "%y-%m-%d %h:%m:%s")
time.struct_time(tm_year=2019, tm_mon=1, tm_mday=1, tm_hour=1, tm_min=1, tm_sec=2, tm_wday=1, tm_yday=1, tm_isdst=-1)
```

- time:以秒为单位返回从纪元开始的当前时间。如果系统时钟提供这些信息,那么可能只存在几分之一秒。就是我们常说的时间戳。返回参数:浮点数

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网