python日期与时间处理

  • datetimefrom datetime import datetime,时间日期相关
  • timedeltafrom datetime import timedelta,计算两个时间的时间差
  • timezonefrom datetime import timezone,时区相关

datetime模块

方法

时间互转方法

方法描述
now()获取当前时间,返回一个datetime对象
timestamp()将datetime对象的时间数据转换成时间戳(float类型)并返回
datetime(year, month=None, day=None, hour=0, minute=0, second=0,microsecond=0, tzinfo=None, *, fold=0)根据给定的参数,生成对应的时间对象(datetime对象)
strptime(date_string, format)str parse time,将字符串转成时间对象,date_string为字符串的时间,format为时间格式,即按照指定的时间格式去解析date_string,然后生成一个新的datetime对象
strftime(format)str format time,将时间对象格式化成字符串,参数format为时间格式,该方法按照format指定的格式将datetime对象的时间转成字符串并返回
fromtimestamp(t, tz=None)根据时间戳t(float类型)生成一个datetime对象并返回
import datetime

# 当前日期时间
now = datetime.datetime.now()
print(f"now()方法返回值信息:类型是{type(now)},值是{now}\n")

# 转成时间戳
time_stamp = now.timestamp()
print(f"timestamp()方法返回值信息:类型是{type(time_stamp)},值是{time_stamp}\n")

# 获取指定的时间
date_time1 = datetime.datetime(2026, 12, 26, 22, 46, 17)
print(f"datetime()方法:类型是{type(date_time1)},值是{date_time1}\n")

# 字符串转换成datetime实例
date_time2 = datetime.datetime.strptime("2022-09-01 23:55:12", "%Y-%m-%d %H:%M:%S")
print(f"strptime()方法返回值信息:类型是{type(date_time2)},值是{date_time2}\n")

# 时间转成字符串
date_time3 = datetime.datetime(2026, 12, 26, 22, 46, 17)
str_time = date_time3.strftime("%Y/%m/%d %H:%M:%S")
print(f"strftime()方法返回值信息:类型是{type(str_time)},值是{str_time}\n")

# 时间戳转成时间
timestamp_data = 1662263658.583933
date = datetime.datetime.fromtimestamp(timestamp_data)
print(f"fromtimestamp()方法返回值信息:类型是{type(date)},值是{date}\n")

执行结果为:

now()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-04 12:18:11.812748

timestamp()方法返回值信息:类型是<class 'float'>,值是1662265091.812748

datetime()方法:类型是<class 'datetime.datetime'>,值是2026-12-26 22:46:17

strptime()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-01 23:55:12

strftime()方法返回值信息:类型是<class 'str'>,值是2026/12/26 22:46:17

fromtimestamp()方法返回值信息:类型是<class 'datetime.datetime'>,值是2022-09-04 11:54:18.583933

时间格式

关于时间格式,参考文档:datetime — Basic date and time types

格式描述
%y两位数的年份表示(00-99)
%Y四位数的年份表示(0000-9999)
%m月份(01-12)
%d月内中的一天(0-31)
%H24小时制小时数(0-23)
%M分钟数(00-59)
%S秒(00-59)
%j年内的一天(001-366)
%I12小时制小时数(01-12)
%U一年中的星期数(00-53)星期天为星期的开始,即是当年的第几周
%w星期(0-6),星期天为星期的开始

weekday()

根据时间对象datetime,获取时间在当周的周几

import datetime

now = datetime.datetime.now()
print(now)

print(f"weekday()返回是周几(周一为0,周二为1直至周日为6),结果为:{now.weekday()}")

执行结果为:

2022-09-04 12:57:40.968827
weekday()返回是周几(周一为0,周二为1直至周日为6),结果为:6

属性

datetime对象有一些属性,year:年,month:月,day:日,hour:时,minute:分,second:秒,microsecond:毫秒

import datetime

now = datetime.datetime.now()
info = f"{now.year}{now.month}{now.day}{now.hour}{now.minute}{now.second}秒,{now.microsecond}毫秒"
print(info)

执行结果为:

2022年9月4日 12时51分31秒,919087毫秒

timedelta

timedelta(days=0, seconds=0, microseconds=0,milliseconds=0, minutes=0, hours=0, weeks=0)
该方法需要导入datetime
timedelta.total_seconds()方法返回时间差(以秒为单位)

import datetime

now = datetime.datetime.now()
print(f"当前时间是{now}")
time_1 = datetime.datetime(2025, 6, 21, 14, 23, 51)

# 30h前
yesterday = now + datetime.timedelta(hours=-30)
print(f"30h前的时间是:{yesterday}")

# 距离下一个国庆还有多少天
if now.month > 10 and now.day > 1:
    next_year = datetime.datetime(now.year+1, 10, 1)
else:
    next_year = datetime.datetime(now.year, 10, 1)
time_to_next = next_year - now
print(f"距离国庆还有{time_to_next.days}天,相差秒数为{time_to_next.total_seconds()}秒")

执行结果为:

当前时间是2022-09-04 15:33:52.090719
30h前的时间是:2022-09-03 09:33:52.090719
距离国庆还有26天,相差秒数为2276767.909281秒
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值