Python-日期时间操作
2021/10/7 1:40:52
本文主要是介绍Python-日期时间操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录原文地址:https://www.cnblogs.com/-beyond/p/15374829.html
转载请先联系博主!!!
- time模块
- struct_time元组
- 获取秒级时间戳
- 获取纳秒级别时间戳
- 时间戳转换为struct_time元组
- struct_time元组转换为时间戳
- ctime-稍微带点可读性的时间格式
- 将struct_time元组转换为ctime形式
- 日期时间格式化
- 日期时间的解析
- 自定义格式日期转换为时间戳
- 程序休眠一段时间
- datatime模块
- 获取当前日期时间
- 时间戳与datetime转换
- 指定格式日期时间与datetime的转换
在python
中,有内置的time
模块和datatime
模块来支持时间的一些操作和转换。
time模块
struct_time元组
在python
中,有一种叫做struct_time
元组的东西来描述时间,将时间细分了,比如:年、月、日、时、分、秒、一年中第几周、一年中第几天、是否为夏令时。
获取struct_time
元组的方式,可以使用time
模块的localtime()
接口,如下面的例子:
import time print(time.localtime())
输出结果如下:
time.struct_time( tm_year=2021, tm_mon=10, tm_mday=6, tm_hour=23, tm_min=47, tm_sec=52, tm_wday=2, tm_yday=279, tm_isdst=0 )
获取秒级时间戳
直接调用time
模块的time()
接口就可以获取秒级时间戳,不过需要注意的是:
- 获取的结果是一个
float
的浮点数,而并不是正数 - 不同版本
python
的执行结果,结果浮点数的精度是不一样的
import time print(time.time()) # 输出秒级时间戳 # 不同版本的python,输出的结果精度是不一样的 # python2 -> 1633534293.33 # python3 -> 1633534364.272089
获取纳秒级别时间戳
python3
中,time
模块提供了time_ns()
接口来获取当前时间的时间戳(纳秒级别)
import time timestamp_ns = time.time_ns() print("timestamp_ns:%s" % timestamp_ns) # timestamp_ns:1633536722569083000
时间戳转换为struct_time元组
假设现在从接口获取到了时间戳的数据,需要转换为struct_time
元组进行操作,那么仍旧可以使用time
模块的localtime()
,传入时间戳即可,示例如下:
import time # 获取时间戳 timestamp = time.time() print("timestamp:%s" % timestamp) # timestamp:1633535670.74 # 调用localtime()传入时间戳,会将其转换为struct_time元组 struct_time = time.localtime(timestamp) print("struct_time:%s" % struct_time) """ struct_time:time.struct_time( tm_year=2021, tm_mon=10, tm_mday=6, tm_hour=23, tm_min=54, tm_sec=30, tm_wday=2, tm_yday=279, tm_isdst=0 ) """
struct_time元组转换为时间戳
可以使用time
模块的mktime()
接口,接收的参数就是struct_time
元组形式的数据,直接使用上一步的测试数据吧,示例如下:
import time struct_time = (2021, 10, 6, 23, 54, 30, 2, 279, 0) timestamp = time.mktime(struct_time) print("timestamp:%s" % timestamp) # timestamp:1633535670.0
从上面的结果可以看到,转换后的时间戳也是一个浮点型,只不过转换后的时间戳和之前的时间戳有点误差,之前的结果是1633535670.74
,现在转换回来的是1633535670.0
。
ctime-稍微带点可读性的时间格式
上面的时间戳或者struct_time
元组,可读性都不是很高,time
模块有ctime()
接口,可以获取一个可读性比较好的时间格式,为了方便记忆,我把这种格式叫做ctime格式
示例如下:
import time print(time.ctime()) # Thu Oct 7 00:07:25 2021
time.ctime()
接口还可以将时间戳转换为上面的那种格式,需要注意这里指的是秒级时间戳,示例如下:
import time timestamp = time.time() print("timestamp:%s" % timestamp) # timestamp:1633536547.53 format_time = time.ctime(timestamp) print("format_time:%s" % format_time) # format_time:Thu Oct 7 00:09:07 2021
将struct_time元组转换为ctime形式
可以使用time模块的asctime()
来将struct_time
元组的时间转换为ctime
形式
import time struct_time = time.localtime() print("struct_time:%s" % struct_time) """ struct_time:time.struct_time( tm_year=2021, tm_mon=10, tm_mday=7, tm_hour=0, tm_min=21, tm_sec=41, tm_wday=3, tm_yday=280, tm_isdst=0 ) """ ctime = time.asctime(struct_time) print("ctime:%s" % ctime) # ctime:Thu Oct 7 00:21:41 2021
日期时间格式化
前面的时间戳、struct_time
、ctime
其实可读性都不太好,如果能有2021-10-08 10:30:11
这种比较符合人类习惯的就好了。
当然了,python
的time
模块提供了strftime()
接口来实现日期时间格式化的功能,在格式化之前,需要先看一下一些格式的规则:
下面是使用的示例:
import time struct_time = time.localtime() format_time = time.strftime("%Y-%m-%d %H:%M:%S", struct_time) print("format_time: %s" % format_time) # format_time: 2021-10-07 00:30:20
日期时间的解析
前面讲了可以使用strftime()
来将struct_time
元组格式化为自定义的形式,但是现在要将自定义形式的日期时间解析为struct_time
元组,此时就要用到strptime()
接口了,使用示例如下:
import time format_time = "2021-10-07 00:30:20" # 传入时间日期,然后指定时间日期的格式,python会按照这个格式去解析 struct_time = time.strptime(format_time, "%Y-%m-%d %H:%M:%S") print("struct_time: %s" % struct_time) """ struct_time: time.struct_time( tm_year=2021, tm_mon=10, tm_mday=7, tm_hour=0, tm_min=30, tm_sec=20, tm_wday=3, tm_yday=280, tm_isdst=-1 ) """
自定义格式日期转换为时间戳
其实只需要将前面的接口组合一下就可以了,先使用strptime()
按照指定格式解析日期,获取到struct_time
元组后,使用mktime()
即可将struct_time
转换为时间戳,示例如下:
import time format_time = "2021-10-07 00:30:20" # 传入时间日期,然后指定时间日期的格式,python会按照这个格式去解析 struct_time = time.strptime(format_time, "%Y-%m-%d %H:%M:%S") # 使用mktime()将struct_time转换为时间卓 timestamp = time.mktime(struct_time) print("timestamp:%s" % timestamp) # timestamp:1633537820.0
程序休眠一段时间
每个编程语言都有一个休眠函数,用来让当前的线程或者进程暂停运行(阻塞)一段时间,python
的time
模块提供了sleep()
接口,使用示例如下:
import time print(time.time()) # 1633538882.96 # 休眠5秒 time.sleep(5) print(time.time()) # 1633538887.96 # 休眠0.5秒 time.sleep(0.5) print(time.time()) # 1633538888.47
datatime模块
datetime
从名字上就能看出,是date
和time
两个的组合。
datetime
模块有5个类很重要,分别是date
、time
、datetime
、timedelta
、tzinfo
,使用的比较多的就是datetime
了。
获取当前日期时间
直接调用datetime类的now()方法即可获取可读性比较高的日期时间,示例如下:
# 从datetime模块导入datetime类 from datetime import datetime print("datatime.new(): %s" % datetime.now()) # datatime.new(): 2021-10-07 00:55:24.152208
时间戳与datetime转换
- 提供了
fromtimestamp()
接口,传入时间戳即可将其转换为datetime
; - 提供了
timestamp()
接口,将传入的datetime
转换为时间戳;
示例如下:
# 从datetime模块导入datetime类 from datetime import datetime import time timestamp = time.time() print("timestamp:%s" % timestamp) # timestamp:1633539692.97 dt = datetime.fromtimestamp(timestamp) print("datetime:%s" % dt) # datetime:2021-10-07 01:01:32.968801 print("timestamp:%s" % datetime.timestamp(dt)) # timestamp:1633539777.946019
指定格式日期时间与datetime的转换
比如有个日期时间格式:2021-10-08 10:20:30
,要转换为datetime,怎么搞?使用strptime
或者说有个datetime
,要转换为2021-10-08 10:20:30
形式,后面不需要小数点的形式?使用strftime()
接口
# 从datetime模块导入datetime类 from datetime import datetime format_time = "2021-10-08 10:20:30" dt = datetime.strptime(format_time, "%Y-%m-%d %H:%M:%S") print("datetime:%s" % dt) # datetime:2021-10-08 10:20:30 dt_now = datetime.now() format_time = datetime.strftime(dt_now, "%Y-%m-%d %H:%M:%S") print("format_time:%s" % format_time) # format_time:2021-10-07 01:14:10
原文地址:https://www.cnblogs.com/-beyond/p/15374829.html
转载请先联系博主!!!
这篇关于Python-日期时间操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享