# Python时间运算的详细机制初探讨

### Python时间运算的详细机制初探讨

`import time`

```In [5]: time.strptime('20161009','%Y%m%d')

Out[5]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, ```
• 通过`time.strptime()`将普通字符时间转换为时间元祖，注意这两者在转换时需要指定字符时间的格式（`%Y%m%d`这里只用到了年月日）；
```In [6]: time.mktime(time.strptime('20161009','%Y%m%d'))

Out[6]: 1475942400.0```
• 通过`time.mktime`将上一步的时间元祖转换为时间戳，也就是1970年0时0分0秒到20161009的0时0分0秒为止，过了多少秒；
```In [7]: time.localtime(1475942400.0)

Out[7]: time.struct_time(tm_year=2016, tm_mon=10, tm_mday=9, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm```
• 通过 `time.localtime`将时间戳转换为时间元祖；
```In [13]: time.strftime('%Y%m%d',time.localtime(1475942400.0))

Out[13]: '20161009'```
• 通过`time.strftime`将时间元祖复原为普通字符时间，同样注意需要指定字符时间的格式。

```%Y  Year with century as a decimal number.

%m  Month as a decimal number [01,12].

%d  Day of the month as a decimal number [01,31].

%H  Hour (24-hour clock) as a decimal number [00,23].

%M  Minute as a decimal number [00,59].

%S  Second as a decimal number [00,61].

%z  Time zone offset from UTC.

%a  Locale's abbreviated weekday name.

%A  Locale's full weekday name.

%b  Locale's abbreviated month name.

%B  Locale's full month name.

%c  Locale's appropriate date and time representation.

%I  Hour (12-hour clock) as a decimal number [01,12].

%p  Locale's equivalent of either AM or PM.```

### 一句话快速进行python时间运算的技巧

#### 1、python快速求值当前时间

```In [1]: from datetime import datetime, timedelta, date

In [2]: (datetime.now()).strftime('%Y%m%d')

Out[2]: '20161009'

In [3]: (datetime.now()).strftime('%Y/%m/%d %H:%M:%S')

Out[3]: '2016/10/09 16:57:12'```

`%a`代表英文周几，`%b`代表月份，`%p`代表AM/PM等，更多的参考下图：

#### 2 、python快速时间运算

python周数运算、天数运算、小时运算、秒数运算、毫秒运算、微秒运算

```In [5]: (datetime.now()-timedelta(days=1)).strftime('%Y%m%d')  # 1天前，N天前

Out[5]: '20161008'

In [6]: (datetime.now()-timedelta(hours=1)).strftime('%Y/%m/%d %H:%M:%S')  # 1小时前，n小时前

Out[6]: '2016/10/09 16:00:02'```

338 篇文章126 人订阅

0 条评论

## 相关文章

### Java每日一题3_关于Java

ArrayList：有序，可重复；底层使用数组，查询快，增删慢；线程不安全，效率高；容量不足时扩增为当前容量*1.5 + 1；

941

3745

1163

3166

### foreach, 用还是不用,这是一个问题~

接触过C#循环的朋友，想来对foreach应该不会陌生，相比一般的for循环方式，foreach显得更加优雅简洁，Unity支持C#脚本，平日使用中数组列表...

561

3904

23110

### 年薪20万Python工程师进阶（6）：Python ORM框架之 Peewee入门Python中10个必读的PEP提案

PEP 是 Python 增强提案(Python Enhancement Proposal)的缩写。社区通过PEP来给 Python 语言建言献策，每个版本你所...

1193

993

1031