python-时间与日期

python时间与日期

time模块

  • Python中有很多模块可以处理时间,time模块可以获取时间戳,常用来记时
  • 如何使用time模块
    • 在文件顶部添加import time:导入time模块,看可以使用time模块中的所有功能,需要使用time+.+对应功能名称即可
  • 时间戳:s = time.time():返回一个浮点数,表示时间戳
  • 利用时间戳函数,可以计算程序运行时间
  • time.sleep(x):程序睡眠x秒
import time

# 获取时间戳
start_time = time.time()
print("start_time = ", start_time) # start_time = 1736348682.6589365

# 执行代码
time.sleep(3)

# 获取时间戳
end_time = time.time()
print("end_time = ", end_time) # end_time = 1736348685.6620014

# 计算运行时间
print("运行时间 = {:.0f}".format(end_time - start_time)) # 运行时间 = 3

获取本地时间:
time.localtime():返回本地时间,是一个struct_time对象,struct_time对象之间不可加减

import time

# 获取本地时间
t = time.localtime()
print("type(t) = ", type(t)) # type(t) = <class 'time.struct_time'>
print("t = ", t) # t = time.struct_time(tm_year=2025, tm_mon=1, tm_mday=8, tm_hour=15, tm_min=23, tm_sec=10, tm_wday=2, tm_yday=8, tm_isdst=0)

print("年份 = ", t.tm_year) # 年份 = 2025
print("月份 = ", t.tm_mon) # 月份 = 1
print("日期 = ", t.tm_mday) # 日期 = 8
print("小时 = ", t.tm_hour) # 小时 = 15
print("分钟 = ", t.tm_min) # 分钟 = 23
print("秒 = ", t.tm_sec) # 秒 = 10
print("一周的第几日 = ", t.tm_wday) # 一周的第几日 = 2
print("一年的第几日 = ", t.tm_yday) # 一年的第几日 = 8
print("夏令时标识 = ", t.tm_isdst) # 夏令时标识 = 0

格式化日期:
time.strftime(fotmat[,t]):把时间t按照format格式转换,返回一个字符串
time.strptime(string, format):把字符串按照format格式转换,返回一个时间

指令含意
%a本地化的缩写星期中每日的名称。
%A本地化的星期中每日的完整名称。
%b本地化的月缩写名称。
%B本地化的月完整名称。
%c本地化的适当日期和时间表示。
%d十进制数 [01,31] 表示的月中日。
%H十进制数 [00,23] 表示的小时(24小时制)。
%I十进制数 [01,12] 表示的小时(12小时制)。
%j十进制数 [001,366] 表示的年中日。
%m十进制数 [01,12] 表示的月。
%M十进制数 [00,59] 表示的分钟。
%p本地化的 AM 或 PM 。
%S十进制数 [00,61] 表示的秒。
%y十进制数 [00,99] 表示的没有世纪的年份。
%Y十进制数表示的带世纪的年份。
import time

# 获取本地时间
t = time.localtime()

# 本地时间转换成一个字符串
str_r = time.strftime("%Y-%m-%d %H:%M:%S", t)
print("type(str_t) = ", type(str_r)) # type(str_t) = <class 'str'>
print("str_r = ", str_r) # str_r = 2025-01-08 15:48:58

t = time.strptime("2025-01-08 15:48:58", "%Y-%m-%d %H:%M:%S")
print("type(t) = ", type(t)) # type(t) = <class 'time.struct_time'>
print("t = ", t) # t = time.struct_time(tm_year=2025, tm_mon=1, tm_mday=8, tm_hour=15, tm_min=48, tm_sec=58, tm_wday=2, tm_yday=8, tm_isdst=-1)

datetime模块

  • datetime模块支持日期和时间的运算,包含下面四种数据:
    • date:日期
    • time:时间
    • datetime:日期时间
    • timedelta:时间间隔
      date日期类
  • 定义date:传递年、月、日
  • 获取年、月、日
  • date之间进行减法
  • 支持与另一个date判断
    • 、<、=、≥、≤

  • date与timedelta加减得到date
  • date与date减得到timedelta
import datetime
a = datetime.date(2023, 10, 1)
print("type(a) = ", type(a)) # type(a) = <class 'datetime.date'>
print("a = ", a) # a = 2025-01-09

# 获取年、月、日
print("a.year = ", a.year) # a.year = 2025
print("a.month = ", a.month) # a.month = 1
print("a.day = ", a.day) # a.day = 9

print("a.weekday() = ", a.weekday()) # a.weekday() = 3

# date之间进行减法
a = datetime.date(2025, 1, 9)
b = datetime.date(2025, 1, 12)
print(type(b - a)) # <class 'datetime.timedelta'>
print(b - a) # 3 days, 0:00:00

time时间类

  • 定义time:传递时、分、秒
  • 获取时、分、秒
  • 支持与另一个time判断
    • 、<、=、≥、≤

  • time之间不支持进行加减法
    • 需要转换成datetime进行
import datetime
a = datetime.time(0, 54, 0)
print("type(a) = ", type(a)) # type(a) = <class 'datetime.time'>
print("a = ", a) # a = 00:54:00

print("a.hour = ", a.hour) # a.hour = 0
print("a.minute = ", a.minute) # a.minute = 54
print("a.second = ", a.second) # a.second = 0

datetime日期时间类
定义datetime:传递年、月、日、时、分、秒

import datetime
a = datetime.datetime(2025, 1, 9, 12, 59, 0)
print("type(a) = ", type(a)) # type(a) = <class 'datetime.datetime'>
print("a = ", a) # a = 2025-01-09 12:59:00
print("a.date() = ", a.date()) # a.date() = 2025-01-09
print("a.time() = ", a.time()) # a.time() = 12:59:00

d = datetime.date(2025, 1, 9)
t = datetime.time(1, 0, 0)
b = datetime.datetime.combine(d, t)
print("b = ", b) # b = 2025-01-09 01:00:00
print(b > a) # False
print(b - a) # -1 day, 12:01:00

timedelta类

  • 时间差:表示两个datetime对象之间的间隔
  • 用days、seconds、microseconds(微秒)三个变量存储时间间隔
  • 定义时可以传入:weeks、days、hours、minutes、seconds、milliseconds(毫秒)、microseconds,然后自动转换成上述三个变量
  • datetime与timedelta进行加减得到新的datetime
  • datetime之间进行减法,得到timedelta
import datetime
a = datetime.datetime(2025, 1, 9 ,2, 58, 0)
delta = datetime.timedelta(days = 100)

# 计算100天后的日期
b = a + delta
print(b) # 2025-04-19 02:58:00

# 计算100天前的日期
b = a - delta
print(b) # 2024-10-01 02:58:00

a = datetime.datetime(2025, 1, 10, 3, 9, 0)
b = datetime.datetime(2025, 1, 12, 15, 0, 0)
delta = b - a

# 计算时间差
print(delta) # 2 days, 11:51:00

# 输出时间差的天数
print(delta.days) # 2

# 输出秒数
print(delta.seconds) # 42660

# 统一转换成秒数
print(delta.total_seconds()) # 215460.0

日期时间和字符串的转换

  • 日期、时间、日期时间转换成字符串:strftime
  • 字符串转换成日期时间:strptime(date_string, format)
import datetime
d = datetime.date(2025, 1, 10)
out = d.strftime("%Y-%m-%d")
print("type(out) = ", type(out)) # type(out) = <class 'str'>
print("out = ", out) # out = 2025-01-10

t = datetime.time(17, 25, 35)
print(t.strftime("%H:%M:%S")) # 17:25:35

dt = datetime.datetime.combine(d, t)
print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 2025-01-10 17:25:35

a = datetime.datetime.strptime("2025-1-10 3:31:0", "%Y-%m-%d %H:%M:%S")
print(a) # 2025-01-10 03:31:00

当前日期

import datetime
print(datetime.date.today()) # 2025-01-09
print(datetime.datetime.now()) # 2025-01-09 19:25:30.874808
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值