字符串与时间的转换
在程序开发中,经常把日期类型转换为字符类型使用。字符串与日期的转换时工作中频繁遇到的问题。Python提供了time模块处理日期和时间。
1. 从时间到字符串的转换
time模块中的函数strftime()可以实现从时间字符串的转换。strftime()的声明如下所示:
strftime(format[, tuple]) -> string
- 参数format表示格式化日期的特殊字符。例如,"%Y-%m%d"。
- 参数tuple表示要转换的时间,用元祖存储。元组中的元素分别表示年、月、日、时、分、秒。
- 函数返回一个一个表示时间的字符串。
参数format格式化日期的常用标记如下表所示:
格式化日期的常用标记
符号 | 说明 |
---|---|
%a | 英文星期的简写 |
%A | 英文星期的完整拼写 |
%b | 英文月份的简写 |
%B | 英文月份的完整拼写 |
%c | 显示本地的日期和时间 |
%d | 日期数,取值在1~31之间 |
%H | 小时数,取值在00~23之间 |
%I | 小时数,取值01~12之间 |
%m | 月份,取值01~12之间 |
%M | 分钟数,取值在01~59之间 |
%j | 显示从本年第1天开始到当天的天数 |
%w | 显示今天是星期几,0表示星期天 |
%W | 显示当天属于本年的第几周,星期一作为一周的第一天进行计算 |
%x | 本地的当天日期 |
%X | 本地的当天时间 |
%y | 年份,取值在0~99之间 |
%Y | 年份完整拼写 |
2. 字符串到时间的转换
字符串到水煎的转换需要进行两次转换,需要使用time模块和datetime类,转换过程分为如下3个步骤。
- 调用函数strptime()把字符串换砖为一个元祖,进行第一次转换。strptime()的声明如下所示:
strptime(string, format) ->struct_time
(1) 参数string表示需要转换的字符串。
(2) 参数format表示日期要转换的输出格式。
(3) 函数返回一个存放时间的元祖。
- 把表示时间的元祖赋值给表示年、月、日的3个变量。
- 把表示年、月、日的3个变量传递给datetime(),进行第二次转换。datetime类的datetime()函数如下所示:
datetime(year, month, day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])
(1) 参数year、month、day分别表示年、月、日,这3个参数必不可少。
(2)函数返回一个datetime类型的变量。
import time, datetime
#时间到字符串的转换
print(time.strftime("%Y-%m-%d %X", time.locatime())
#字符串到时间的转换
t = time.strptime("2008-08-08", "%Y-%m-%d")
y,m,d = [0:3]
print(datetime.datetime(y,m,d)
第4行代码,函数localtime()返回当前时间(例如,2008-02-14 13:52:11),strftime把当前的时间格式化为字符串类型。输出结果:2008-02-14 13:52:11。
第6行代码,把字符串 "2008-08-08" 转换为一个元组返回。
第7行代码,把元组中前3个表示年、月、日的元素赋值给3个变量。
第8行代码,调用datetime()返回时间类型。输出结果:2008-08-08 00:00:00。
注意:格式化日期的特殊标记是区分大小写的,%Y与%y并不相同的。