Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
Python 提供了一个 time
和 calendar
模块可以用于格式化日期和时间。
时间元组
很多Python函数用一个元组装起来的9组数字处理时间:
序号 | 属性 | 值 |
0 | tm_year | 2017(4位数) |
1 | tm_mon | 1-12 |
2 | tm_mday | 1-31 |
3 | tm_hour | 0-23 |
4 | tm_min | 0-59 |
5 | tm_sec | 0-61(60,61是闰秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1到366 (儒略历) |
8 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
引入time模块
# -*- coding: UTF-8 -*-
import time; # 引入time模块
获取时间戳
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
>>> print time.time()
1506226561.4
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
获取当前时间
从返回浮点数的时间辍方式向时间元组转换,只要将浮点数传递给如localtime
之类的函数。
>>> print time.localtime()
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=24, tm_hour=12, tm_min=11, tm_sec=34, tm_wday=6, tm_yday=267, tm_isdst=0)
获取格式化的时间
根据需求选取各种格式,最简单的获取可读的时间模式的函数是asctime()
>>> localtime = time.asctime(time.localtime(time.time()))
>>> print localtime
Sun Sep 24 12:11:06 2017
格式化日期
可以使用 time 模块的 strftime 方法来格式化日期
>>> print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
2017-09-24 12:13:52
>>> print time.strftime("%a %b %d %H:%M:%S %Y",time.localtime())
Sun Sep 24 12:16:01 2017
# 将格式字符串转换为时间戳
>>> timestr = "Sun Sep 24 12:18:44 2017"
>>> print time.mktime(time.strptime(timestr, "%a %b %d %H:%M:%S %Y"))
1506226724.0
python中时间日期格式化符号:
符号 | 值 |
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00=59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
获取月日历
Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历
>>> print calendar.month(2017,9)
September 2017
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
Time
模块内置函数
序号 | 函数及描述 |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
Time模块包含了以下2个非常重要的属性:
序号 | 函数及描述 |
1 |
|
2 |
|
日历Calendar
模块
此模块的函数都是日历相关的,例如打印某月的字符月历。
星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。模块包含了以下内置函数:
序号 | 函数及描述 |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
其他相关模块
datetime
模块 pytz
模块 dateutil
模块