Python datetime 日期对象基本用法:创建,转换和运算

Python datetime

Python datetime 官方文档

一、引入 datetime 模块

Python 的 datetime 模块是常用的日期处理模块,模块中的 datetime 类即为我们常用的日期对象,两者名称是完全相同,初次使用时可能会弄混,我们常说的 datetime 其实是对应模块中的 datetime类。

datetime 模块中实际上包括了若干描述时间的类,如下:

  • time
  • date
  • timedelta
  • tzinfo
  • timezone
  • datetime

所以常用的方法可以是实例化上面的类,或者是使用类中的方法:

# 引入 datetime 模块
import datetime

# datetime模块的变量
max_year = datetime.MAXYEAR # 9999

# 用法一
# 使用 datetime类 的方法
today = datetime.datetime.today() # 这个方法在类中而不是外层模块中

# 用法二
# 实例化 datetime 对象,年月日必填
d = datetime.datetime(2024, 6, 1) # 两个 datetime !! 第一个是模块,第二个是模块里面同名的类

二、创建,修改

python 日期对象,可以设置 [year, month, day, hour, minute, second, microsecond] 到毫秒的时间:

import datetime

# 指定参数,例如哪一年,哪一个月份,什么时间都可以
# 必须指定 year, month, day
d = datetime.datetime(2021, 10, 10, 0, 0, 0)

# 当前时间
today = datetime.datetime.today()

另外,也可以对已经生成的对象进行修改,设置所需的时间,可以通过 replace 方法修改已经创建的时间:

d = datetime.datetime(2024, 10, 10, 0, 0, 0)
d.replace(year=2020)
# output
# 2020, 10, 10, 0, 0, 0

replace 可以设置的日期单位还包括:

  • day
  • month
  • second
  • microsecond

可以直接访问日期对象的各个日期单位:

d = datetime.datetime(2024, 10, 10, 0, 0, 0)
print(d.year) # 2024
print(d.month) # 10
print(d.day) # 10

三、转换

当你需要对日期进行运算的时候,datetime 提供了时间加减的计算方法,此时将输入的日期字符串转换为 datetime 对象将更加方便;而当你需要传输,写入,或者是打印日期的时候,datetime 也提供了输出格式化字符串的方法。

这就涉及到日期对象(datetime) 和日期字符串(str)之间的相互转换

1. datetime.datetime.strftime(format) 日期对象转换为指定格式化的字符串

可以通过 datetime 对象strftime 方法将其格式化输出成为对应的字符串:

import datetime

dt = datetime.datetime(2021, 1, 1, 0, 0, 0)

# 时间格式化的通配符很多,基本完全通用,但也有一些语言支持的通配符集合有
# 差异,例如 MySQL 里面还有 %i 表示 00-59 的时间格式,注意不要混淆
# 常用
# %Y 四位年份 0000-2024
# %y 两位年份 00-99
# %m 月份 01-12
# %d 日期 01-31
# %H 小时 01-24
# %I 12小时制 01-12
# %M 分钟 01-59
# %S 秒钟 01-59
# %w 周 0-6
# %a 周英文 Sat
# %A 周英文全称 Saturday
# %j 今年的第几天 001-366
# %U 今年以周一开始的第几周 00-53
datetimeStr = dt.strftime('%Y-%m-%d %H:%M:%S') 

print(datetimeStr)
# output 
# '2021-01-01 00:00:00'

2. datetime.datetime.strptime(str, format) 日期字符串转换为日期对象

可以通过 datetime strptime 函数,将字符串根据指定格式转换为对应的日期对象:

# 注意还是两个datetime,这里是 datetime 类的方法
dt = datetime.datetime.strptime('2021-09-01 10:53:13', '%Y-%m-%d') 
#
# 报错!天,时分秒未转换


dt = datetime.datetime.strptime('2021-09-01 10:53:13', '%Y-%m-%d %H:%M:%S')
# 正常转换
# 2021, 9, 1, 10, 53, 13

3. datetime.datetime.fromtimestamp(ts) 时间戳转日期

将时间戳转换为字符串:

datetime.datetime.fromtimestamp(ts) # ts 为整数类型的时间戳

得到的日期为距离 1970-01-01 08:00:00ts 秒后的日期,所以如果 ts=0,则结果为 datetime.datetime(1970, 1, 1, 8, 0)

4. datetime.datetime.timestamp() 日期对象转时间戳

转换的时间戳为该日期距离 1970-01-01 08:00:00 的秒数:

import datetime

# 当前时间戳,float 类型
datetime.datetime.today().timestamp()

# 等价于
(dt - datetime(1970, 1, 1, tzinfo=timezone.utc)).total_seconds()

四、运算

日期的运算通过 datetime.datetime 日期对象和 timedelta 日期增量 之间的加减运算得到新的日期结果,通过引入 timedelta 进行使用,可以包括最大到一周的 week 的增量单位:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

而在这些单位中,实际上只有 daysseoncdsmicroseconds 是存储的对应单位的值,而其他单位都会转化为上面三个单位中向下最近的单位表示,例如:

# 一天的时间单位量
day_delta = datetime.timedelta(days=1) # 实际即为 days=1

# 一周
week_delta = datetime.timedelta(weeks=1)
# 转化为 timedelta(days=7)

# 一小时
hour_delta = datetime.timedelta(hours=1)
# 转化为 timedelta(seconds=3600)

# 一分钟
min_delta = datetime.timedelta(minutes=1)
# 转化为 timedelta(seconds=60)

datetime 对象可以与 timedelta 对象进行加减运算,从而实现日期运算:

import datetime

# 当前时间
today = datetime.datetime.today()

# 昨天
yesterday = today - datetime.timedelta(days=1)

# 明天
tomorrow = today + datetime.timedelta(days=1)

# 去年年份
last_year = (today.replace(day=1) - datetime.timedelta(days=1)).year
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python中的datetime模块提供了处理日期和时间的函数和类。在蓝桥杯中,datetime模块通常用于处理时间戳或时间格式的输入输出,以及计算时间差等操作。 以下是datetime模块中常用的函数和类: 1. datetime.datetime:表示日期和时间的类,可以用于创建日期时间对象,支持加减运算、比较运算等操作。 2. datetime.date:表示日期的类,可以用于创建日期对象,支持加减运算、比较运算等操作。 3. datetime.time:表示时间的类,可以用于创建时间对象,支持加减运算、比较运算等操作。 4. datetime.timedelta:表示时间差的类,可以用于计算时间差,支持加减运算、比较运算等操作。 5. datetime.datetime.strptime:将字符串转换日期时间对象。 6. datetime.datetime.strftime:将日期时间对象转换为字符串。 下面是一些示例代码: ```python import datetime # 创建时间戳对象 timestamp = datetime.datetime.now() print(timestamp) # 创建日期对象 date = datetime.date.today() print(date) # 创建时间对象 time = datetime.time(hour=12, minute=30, second=0) print(time) # 计算时间差 delta = datetime.timedelta(days=1) print(timestamp - delta) # 字符串转日期时间对象 str_time = '2022-01-01 12:00:00' datetime_obj = datetime.datetime.strptime(str_time, '%Y-%m-%d %H:%M:%S') print(datetime_obj) # 日期时间对象转字符串 str_time = datetime_obj.strftime('%Y-%m-%d %H:%M:%S') print(str_time) ``` 以上是datetime模块的一些基本用法,可以根据需要进一步了解和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值