您的位置:

学习Python strptime,掌握将字符串转换为时间的技巧

一、了解时间格式化字符串

strptime函数是Python中将字符串转换为时间的函数,它可以将字符串解析为一个时间元组。在使用该函数之前,了解时间格式化字符串对于正确解析时间字符串至关重要。时间格式化字符串是一个字符串,其中包含一些特殊的格式化指令,将会在调用strptime函数时被替换为相应的值。

下面是一些常用的格式化指令:

%Y	四位数的年份
%m	月份(01-12)
%B	月份名称
%b	月份名称缩写
%d	日期(01-31)
%H	小时(00-23)
%M	分钟(00-59)
%S	秒(00-59)
%f	微秒
%z	UTC偏移量
%Z	时区名称
%j	一年中的第几天 (001-366)
%U	一年中的第几周 (00-53) 星期日作为一周的第一天
%W	一年中的第几周 (00-53) 星期一作为一周的第一天
%c	完整的日期和时间
%x	仅日期
%X	仅时间
%w	星期(0-6),星期日为星期0

例如,时间格式化字符串为“%Y-%m-%d %H:%M:%S”,该字符串表示将时间格式化为“年-月-日 时:分:秒”的形式。

二、将字符串转换为时间

下面是一个例子,将时间字符串转换为时间元组:

import time

date_str = "2022-01-01 08:15:27"
time_tuple = time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(time_tuple)

输出:

time.struct_time(tm_year=2022, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=15, tm_sec=27, \
tm_wday=5, tm_yday=1, tm_isdst=-1)

上述代码中,date_str表示要转换的时间字符串,"%Y-%m-%d %H:%M:%S"是时间格式化字符串,调用strptime函数将时间字符串转换为时间元组。运行程序后,输出的结果为时间元组。

三、从时间元组中获取时间

time元组是一个包含9个元素的元组,可以使用元组的索引获取时间元素,例如tm_year表示年份,tm_mon表示月份等。

下面是一个例子,从时间元组中获取年份:

import time

date_str = "2022-01-01 08:15:27"
time_tuple = time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
year = time_tuple.tm_year
print(year)

输出:

2022

上述代码中,通过解析时间字符串获得时间元组,然后使用tm_year获取年份。

四、将时间转换为字符串

通过strftime函数可以将时间元组转换为时间字符串,具体方法是给定一个时间格式化字符串,然后将时间元组格式化成字符串。

下面是一个例子,将时间元组转换为时间字符串:

import time

time_tuple = (2022, 1, 1, 8, 15, 27, 5, 1, -1)
date_str = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
print(date_str)

输出:

2022-01-01 08:15:27

上述代码中,先定义一个时间元组,然后使用strftime函数将时间元组转换为时间字符串,运行程序后可以看到输出的时间字符串为"2022-01-01 08:15:27"。

五、处理时区

strptime函数和strftime函数的时区参数都是不同的。在调用strptime函数时,可以使用"UTC"或"+"符号和UTC偏移量指定时间字符串中的时区标识符。在调用strftime函数时,可以使用"%z"或"%Z"指令指定输出的时区。

下面是一个例子,演示如何将使用UTC时区的时间字符串转换为时间元组,并将其转换为指定时区的时间字符串:

import time

date_str = "2022-01-01 08:15:27+00:00"
time_tuple = time.strptime(date_str, "%Y-%m-%d %H:%M:%S%z")
local_time_tuple = time.localtime(time.mktime(time_tuple) + 8 * 3600)
local_date_str = time.strftime("%Y-%m-%d %H:%M:%S %Z", local_time_tuple)
print(local_date_str)

输出:

2022-01-01 16:15:27 CST

上述代码中,首先使用strptime函数解析时间字符串且该字符串包含时区信息,然后使用localtime函数将时间元组转换为本地时间元组。最后使用strftime函数将本地时间元组转换为包含时区信息的时间字符串,并输出。

六、总结

strptime函数是Python中将字符串转换为时间的函数,它可以将字符串解析为一个时间元组。在使用该函数之前,了解时间格式化字符串对于正确解析时间字符串至关重要。通过strftime函数可以将时间元组转换为时间字符串。处理时区时,strptime函数和strftime函数的时区参数都是不同的。