6.1.8 字符串与日期的转换

在开发中,经常把日期类型转换为字符串类型使用。字符串与日期的转换是日常工作中会频繁遇到的问题。Java提供了SimpleDateFormat类实现日期到字符串的转换。Python提供了time模块处理日期和时间。函数strftime()可以实现从时间到字符串的转换。strftime()的声明如下所示。


strftime(format[, tuple]) -> string

【代码说明】

·参数format表示格式化日期的特殊字符。例如,“%Y-%m-%d”相当于Java中的“yyyy-MM-dd”。

·参数tuple表示需要转换的时间,用元组存储。元组中的元素分别表示年、月、日、时、分、秒。

·本函数返回一个表示时间的字符串。

参数format格式化日期的常用标记如表6-3所示。

表6-3 格式化日期的常用标记

字符串到时间的转换需要使用time模块和datetime类进行两次,转换过程分为如下3个步骤。

1)调用函数strptime()把字符串转换为一个元组,进行第1次转换。strptime()的声明如下所示。


strptime(string, format) -> struct_time

【代码说明】

·参数string表示需要转换的字符串。

·参数format表示日期时间的输出格式。

·函数返回一个存放时间的元组。

2)把表示时间的元组赋值给表示年、月、日的3个变量。

3)把表示年、月、日的3个变量传递给函数datetime(),进行第2次转换。datetime类的datetime()函数如下所示。


datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

【代码说明】

·参数year、month、day分别表示年、月、日,这3个参数必不可少。

·函数返回1个datetime类型的变量。

下面这段代码演示了时间到字符串、字符串到时间的转换过程。


01     import time,datetime               # 导入time、datetime模块
02
03     # 时间到字符串的转换
04     print (time.strftime("%Y-%m-%d %X", time.localtime()))
05     # 字符串到时间的转换
06     t = time.strptime("2019-10-08", "%Y-%m-%d")
07     y, m, d = t[0:3]
08     print (datetime.datetime(y, m, d))

【代码说明】

·第4行代码中,函数localtime()返回当前的时间(此处的时间为作者运行本代码时的时间),strftime()把当前的时间格式转化为字符串类型。输出结果:


2019-07-24 17:52:11

·第6行代码,把字符串“2019-10-08”转换为一个元组返回。

·第7行代码,把元组中前3个表示年、月、日的元素赋值给3个变量。

·第8行代码,调用datetime()返回时间类型。输出结果:


2019-10-08 00:00:00

注意 格式化日期的特殊标记是区分大小写的,%Y与%y不相同。