https://blog.csdn.net/weixin_41888257/article/details/123569910
使用python中的time模块,对时间的几种格式进行转换
一、几个常用函数
strptime(), 将 时间字符串 转换成 结构化时间 struct_time
注意,结构化时间 是所有转换的 过渡格式
import time
time_str = "2022-03-18 10:54:00"
struct_time = time.strptime(time_str, '%Y-%m-%d %H:%M:%S')
print(struct_time)
1
2
3
4
time.struct_time(tm_year=2022, tm_mon=3, tm_mday=18, tm_hour=10, tm_min=54, tm_sec=0, tm_wday=4, tm_yday=77, tm_isdst=-1)
1
struct_time 是一个类,里面分别对应了时间的年、月、日、时、分、秒、一周的第几天(周一是0,0-6)、一年的第几天(从1开始,1-366)、夏时令(是夏时令1,不是0,不知道-1)。
mktime(),将 结构化时间 转换为 时间戳
timestamp = time.mktime(struct_time)
print(timestamp)
1
2
1647572040.0
1
strftime(),把 结构化时间 转换为 任意格式的时间字符串
time_str_new = time.strftime("%Y%m%d-%H:%M:%S", struct_time)
print(time_str_new)
1
2
20220318-10:54:00
1
二、其他常见需求
2.1 获取当前时间
print(time.time())
print(time.localtime())
print(time.localtime(time.time()))
1
2
3
1647574078.38
time.struct_time(tm_year=2022, tm_mon=3, tm_mday=18, tm_hour=11, tm_min=27, tm_sec=58, tm_wday=4, tm_yday=77, tm_isdst=0)
time.struct_time(tm_year=2022, tm_mon=3, tm_mday=18, tm_hour=11, tm_min=27, tm_sec=58, tm_wday=4, tm_yday=77, tm_isdst=0)
1
2
3
2.2 时间戳 => 时间字符串
时间戳 => 结构化时间 (struct_time) => 时间字符串
time_stamp = 1640844000
时间戳 => 结构化时间 => 时间字符串
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time_stamp))
print(time_str)
1
2
3
4
5
2021-12-30 14:00:00
1
2.3 时间字符串 => 时间戳
时间字符串 => 结构化时间 (struct_time) => 时间戳
time_str = "2022-03-18 10:54:00"
time_stamp = time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
print(time_stamp)
1
2
3
1647572040.0
1
2.4 时间字符串A => 时间字符串B
时间字符串A => 结构化时间 (struct_time) => 时间字符串B
time_str = "2022-03-18 10:54:00"
time_str_new = time.strftime("%Y%m%d-%H:%M:%S", time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
print(time_str_new)
1
2
3
20220318-10:54:00
————————————————
版权声明:本文为CSDN博主「苏学算法」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41888257/article/details/123569910
https://www.cnblogs.com/rychh/p/9742413.html
报错:TypeError: Tuple or struct_time argument required
原因:时间戳——格式化时间 不能直接转换会报错
上代码:
import time
time3 = time.asctime(time.time())#
print ("本地时间为 :",time3)
[[图片上传失败...(image-960667-1660627633762)]](javascript:void(0); "复制代码")
<pre style="margin: 0px; padding: 0px; transition-duration: 0.2s; transition-property: background-color, border-color, border-radius, padding-top, padding-bottom, margin-top, margin-bottom, color, opacity; overflow: auto; font-family: "Courier New", serif; font-size: 12px; overflow-wrap: break-word;">>>> import time >>> time3 = time.asctime(time.time())# Traceback (most recent call last):
File "<stdin>", line 1, in <module> TypeError: Tuple or struct_time argument required >>> print ("本地时间为 :",time3)</pre>
[[图片上传失败...(image-cb45b8-1660627633762)]](javascript:void(0); "复制代码")
所以需要注意他们之间的转换关系
时间戳——时间元祖&时间元祖——格式化时间 是能相互转换的
但是,时间戳——格式化时间 不能直接相互转换,需要转为时间元祖进行过渡
解决方法:
第一步:时间戳——时间元祖
time.localtime(time.time())#转换成时间元祖
<pre style="margin: 0px; padding: 0px; transition-duration: 0.2s; transition-property: background-color, border-color, border-radius, padding-top, padding-bottom, margin-top, margin-bottom, color, opacity; overflow: auto; font-family: "Courier New", serif; font-size: 12px; overflow-wrap: break-word;">>>> time.localtime(time.time())#转换成时间元祖
time.struct_time(tm_year=2018, tm_mon=10, tm_mday=4, tm_hour=15, tm_min=44, tm_sec=39, tm_wday=3, tm_yday=277, tm_isdst=0)
</pre>
第二步:时间元祖的格式化
import time
localtime = time.asctime(time.localtime())#
print ("本地时间为 :",localtime)
<pre style="margin: 0px; padding: 0px; transition-duration: 0.2s; transition-property: background-color, border-color, border-radius, padding-top, padding-bottom, margin-top, margin-bottom, color, opacity; overflow: auto; font-family: "Courier New", serif; font-size: 12px; overflow-wrap: break-word;">>>> import time
localtime = time.asctime(time.localtime())#
print ("本地时间为 :",localtime)
本地时间为 : Thu Oct 4 15:45:24 2018
</pre>