python时间处理

我们先来了解一下计算机中的时间:

生活中的时间:从公元0年0月0日0分0秒,到现在时间间隔

计算机中的时间:从1970年1月1日0点0分0秒,到现在时间间隔

Unix时间戳: Unix时间戳是从1970年1月1日(UTC)零点开始所经过的秒数,不考虑闰秒。这个时间起点被称为“UNIX纪元”,它是一个广泛接受的标准,使得不同计算机系统之间的时间可以进行精确比较。

计算机中的时间是用来记录事件发生顺序、执行计划任务、存储文件创建修改时间等众多功能的基础要素,它的管理和使用涉及到软件和硬件多个层次的技术实现。

当我们的代码涉及到获取当前时间、格式化显示时间、计算时间间隔以及处理日期和时间的转换时。有两个关键模块可以帮助我们轻松地完成这些任务,那就是 time 和 datetime 模块。

time模块

是Python内置的基础时间处理模块,它提供了简单但实用的功能来操作时间戳(Unix时间戳,即从1970年1月1日UTC零点以来的秒数)。

  • time 模块提供了基本的时间和日期相关的函数,如:
    • time.time() 返回当前时间的浮点数表示(从 Unix 纪元以来的秒数)。
    • time.localtime([secs]) 将时间戳转换为本地时区的 struct_time 对象。
    • time.asctime() 接受一个 struct_time 对象并返回一个可读的时间字符串。
    • time.strftime(format[, t]) 格式化本地时间,将时间元组或struct_time对象转化为格式化的字符串。
    • time.sleep(secs) 暂停程序执行指定秒数。

接下来我们代码演示一下

#time 模块
import time

#获取当前时间戳(unix纪元以来的秒数)
timestamp=time.time()
print(f'当前时间戳:{timestamp}') #当前时间戳:1709866907.78388

#将当前时间戳转换为本地时区的struct_time对象
localtime=time.localtime(timestamp)
print(f'当前时间:{localtime}')
#当前时间:time.struct_time(tm_year=2024, tm_mon=3, tm_mday=8, tm_hour=11, tm_min=1, tm_sec=47, tm_wday=4, tm_yday=68, tm_isdst=0)

#格式化struct_time对象为可读字符串,输出本地时间
time1=time.strftime('%Y-%m-%d %H:%M:%S',localtime)
print(f'当前时间:{time1}') #当前时间:2024-03-08 11:01:47

# 转换特定字符串为时间struct_time对象并格式化输出
formatted_string = "2024-03-08 11:11:11"
t = time.strptime(formatted_string, '%Y-%m-%d %H:%M:%S')
print("转换后的struct_time对象:", t)

# 如果要将转换后的 struct_time 再次格式化为字符串,可以这样做:
formatted_t = time.strftime('%Y-%m-%d %H:%M:%S', t)
print("转换回字符串形式的时间:", formatted_t)

# 暂停n秒
time.sleep(4)
print("暂停4秒后,继续执行...") #4秒后 输出  暂停4秒后,继续执行...

datetime模块

提供了更为高级和全面的日期时间处理功能,它通过类和方法的形式呈现,更易于理解和操作。

  • datetime 模块提供了一套丰富的类,包括 datetimedatetimetimedelta, 和 tzinfo,用以更高级、更灵活地处理日期和时间:
    • datetime.datetime.now() 返回当前日期和时间的 datetime 对象。
    • datetime.date.today() 返回今天的日期对象。
    • datetime.timedelta 用于表示两个日期或时间之间的差。可以通过加减 timedelta 对象来计算新的日期和时间。
    • 使用 datetime.strptime() 和 datetime.datetime.strftime() 进行日期时间的字符串与 datetime 对象间的相互转换。

代码演示如下:

#datetime 模块
from datetime import datetime,timedelta

print(f'获取当前时间:{datetime.now()}')
#获取当前时间:2024-03-08 11:36:41.235931
print(f'获取当前时间戳(unix纪元以来的秒数):{datetime.timestamp(datetime.now())}')
#获取当前时间戳(unix纪元以来的秒数):1709869001.235931
print(f'获取今天日期:{datetime.today().date()}')
#获取今天日期:2024-03-08
print(f'创建一个指定日期和时间的datetime:{datetime(2024,3,8,11,11,11)}')
#创建一个指定日期和时间的datetime:2024-03-08 11:11:11
print(f'计算两个日期之间的差值:{datetime.now()-datetime(2024,1,1)}')
#计算两个日期之间的差值:67 days, 11:36:41.235931
print(f'使用timedelta增加或减少日期时间:{datetime.now()+timedelta(days=1,hours=1)}')
#使用timedelta增加或减少日期时间:2024-03-09 12:36:41.235931
print("格式化今天的字符", datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
#格式化今天的字符 2024-03-08 11:36:41
# 从字符串解析日期时间
date_string = "2024-1-1 14:30:00"
parsed_date = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print("解析后的日期时间:", parsed_date)
#解析后的日期时间: 2024-01-01 14:30:00

总的来说,time模块适合简单的计时和基本的时间戳转换,而datetime模块则提供了一套完善的面向对象接口,更适合复杂的日期和时间操作。无论我们是需要处理应用程序的日志记录、计划任务执行还是数据处理分析,Python的时间处理模块都能有效帮到我们。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值