Python 使用日期和时间模块(datetime)

Python的datetime模块提供了用于操作日期和时间的类和方法,允许我们轻松处理和格式化日期和时间。

datetime模块概述

datetime模块主要包含以下几个类:

  • datetime.date:表示日期(年、月、日)。
  • datetime.time:表示时间(时、分、秒、微秒)。
  • datetime.datetime:表示日期和时间。
  • datetime.timedelta:表示时间间隔,精确到微秒。
  • datetime.tzinfo:与时区相关的信息对象。

导入datetime模块

在开始使用datetime模块之前,需要先导入:

import datetime

日期类(date)

创建日期对象

可以通过datetime.date类创建一个日期对象:

import datetime

# 创建一个日期对象
d = datetime.date(2024, 7, 18)
print(d)  # Output: 2024-07-18

获取当前日期

使用today()方法可以获取当前日期:

import datetime

# 获取当前日期
today = datetime.date.today()
print(today)  # Output: 2024-07-18

获取日期的各个部分

可以通过yearmonthday属性获取日期的年、月、日:

import datetime

d = datetime.date(2024, 7, 18)
print(d.year)   # Output: 2024
print(d.month)  # Output: 7
print(d.day)    # Output: 18

日期格式化

可以使用strftime方法将日期对象格式化为字符串:

import datetime

d = datetime.date(2024, 7, 18)
formatted_date = d.strftime("%Y-%m-%d")
print(formatted_date)  # Output: 2024-07-18

常见的格式化代码包括:

  • %Y:四位数的年份。
  • %m:两位数的月份(01-12)。
  • %d:两位数的日期(01-31)。
  • %A:星期的完整名称。
  • %a:星期的缩写名称。
  • %B:月份的完整名称。
  • %b:月份的缩写名称。

解析字符串为日期

可以使用strptime方法将字符串解析为日期对象:

import datetime

date_string = "2024-07-18"
d = datetime.datetime.strptime(date_string, "%Y-%m-%d").date()
print(d)  # Output: 2024-07-18

时间类(time)

创建时间对象

可以通过datetime.time类创建一个时间对象:

import datetime

# 创建一个时间对象
t = datetime.time(12, 34, 56)
print(t)  # Output: 12:34:56

获取时间的各个部分

可以通过hourminutesecondmicrosecond属性获取时间的时、分、秒和微秒:

import datetime

t = datetime.time(12, 34, 56, 789000)
print(t.hour)        # Output: 12
print(t.minute)      # Output: 34
print(t.second)      # Output: 56
print(t.microsecond) # Output: 789000

时间格式化

可以使用strftime方法将时间对象格式化为字符串:

import datetime

t = datetime.time(12, 34, 56)
formatted_time = t.strftime("%H:%M:%S")
print(formatted_time)  # Output: 12:34:56

常见的格式化代码包括:

  • %H:两位数的小时(00-23)。
  • %M:两位数的分钟(00-59)。
  • %S:两位数的秒(00-59)。
  • %f:微秒(000000-999999)。

解析字符串为时间

可以使用strptime方法将字符串解析为时间对象:

import datetime

time_string = "12:34:56"
t = datetime.datetime.strptime(time_string, "%H:%M:%S").time()
print(t)  # Output: 12:34:56

日期时间类(datetime)

创建日期时间对象

可以通过datetime.datetime类创建一个日期时间对象:

import datetime

# 创建一个日期时间对象
dt = datetime.datetime(2024, 7, 18, 12, 34, 56)
print(dt)  # Output: 2024-07-18 12:34:56

获取当前日期时间

使用now()方法可以获取当前日期和时间:

import datetime

# 获取当前日期时间
now = datetime.datetime.now()
print(now)  # Output: 2024-07-18 12:34:56.789000

获取日期时间的各个部分

可以通过yearmonthdayhourminutesecondmicrosecond属性获取日期时间的各个部分:

import datetime

dt = datetime.datetime(2024, 7, 18, 12, 34, 56, 789000)
print(dt.year)         # Output: 2024
print(dt.month)        # Output: 7
print(dt.day)          # Output: 18
print(dt.hour)         # Output: 12
print(dt.minute)       # Output: 34
print(dt.second)       # Output: 56
print(dt.microsecond)  # Output: 789000

日期时间格式化

可以使用strftime方法将日期时间对象格式化为字符串:

import datetime

dt = datetime.datetime(2024, 7, 18, 12, 34, 56)
formatted_datetime = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)  # Output: 2024-07-18 12:34:56

解析字符串为日期时间

可以使用strptime方法将字符串解析为日期时间对象:

import datetime

datetime_string = "2024-07-18 12:34:56"
dt = datetime.datetime.strptime(datetime_string, "%Y-%m-%d %H:%M:%S")
print(dt)  # Output: 2024-07-18 12:34:56

时间间隔类(timedelta)

创建时间间隔对象

可以通过datetime.timedelta类创建一个时间间隔对象:

import datetime

# 创建一个时间间隔对象
delta = datetime.timedelta(days=5, hours=12, minutes=30)
print(delta)  # Output: 5 days, 12:30:00

时间间隔的运算

时间间隔对象可以用于日期时间对象之间的运算:

import datetime

# 当前日期时间
now = datetime.datetime.now()

# 创建一个时间间隔对象
delta = datetime.timedelta(days=5)

# 日期时间加上时间间隔
future_date = now + delta
print(future_date)

# 日期时间减去时间间隔
past_date = now - delta
print(past_date)

时间间隔的属性

可以通过dayssecondsmicroseconds属性获取时间间隔的天数、秒数和微秒数:

import datetime

delta = datetime.timedelta(days=5, hours=12, minutes=30)
print(delta.days)         # Output: 5
print(delta.seconds)      # Output: 45000 (12 hours * 3600 + 30 minutes * 60)
print(delta.microseconds) # Output: 0

时区处理(timezone)

创建时区对象

可以通过datetime.timezone类创建一个时区对象:

import datetime

# 创建一个UTC+8时区对象
tz = datetime.timezone(datetime.timedelta(hours=8))
print(tz)  # Output: UTC+08:00

日期时间对象与时区

可以将日期时间对象与时区关联:

import datetime

# 创建一个UTC+8时区对象
tz = datetime.timezone(datetime.timedelta(hours=8))

# 创建一个带时区的日期时间对象
dt = datetime.datetime(2024, 7, 18, 12, 34, 56, tzinfo=tz)
print(dt)  # Output: 2024-07-18 12:34:56+08:00

将日期时间对象转换为不同的时区

可以使用astimezone方法将日期时间对象转换为不同的时区:

import datetime

# 创建一个UTC时区对象
utc_tz = datetime.timezone.utc

# 创建一个UTC+8时区对象
tz_utc_plus_8 = datetime.timezone(datetime.timedelta(hours=8))

# 当前UTC时间
now_utc = datetime.datetime.now(utc_tz)

# 将UTC时间转换为UTC+8时区时间
now_utc_plus_8 = now_utc.astimezone(tz_utc_plus_8)
print(now_utc_plus_8)

datetime模块的其他功能

日期时间的比较

日期时间对象支持比较运算:

import datetime

dt1 = datetime.datetime(2024, 7, 18, 12, 34, 56)
dt2 = datetime.datetime(2024, 7, 19, 12, 34, 56)

print(dt1 < dt2)  # Output: True
print(dt1 > dt2)  # Output: False
print(dt1 == dt2) # Output: False

日期时间的替换

可以使用replace方法替换日期时间对象的某些部分:

import datetime

dt = datetime.datetime(2024, 7, 18, 12, 34, 56)

# 替换年份
new_dt = dt.replace(year=2025)
print(new_dt)  # Output: 2025-07-18 12:34:56

# 替换月份和小时
new_dt = dt.replace(month=8, hour=14)
print(new_dt)  # Output: 2024-08-18 14:34:56

日期时间的ISO格式

可以使用isoformat方法将日期时间对象格式化为ISO 8601标准的字符串:

import datetime

dt = datetime.datetime(2024, 7, 18, 12, 34, 56)

# ISO 8601格式
iso_format = dt.isoformat()
print(iso_format)  # Output: 2024-07-18T12:34:56

综合实例

计算两个日期之间的天数差

import datetime

date1 = datetime.date(2024, 7, 18)
date2 = datetime.date(2025, 7, 18)

# 计算日期差
delta = date2 - date1
print(delta.days)  # Output: 365

计算两个时间之间的秒数差

import datetime

time1 = datetime.datetime.strptime("12:34:56", "%H:%M:%S")
time2 = datetime.datetime.strptime("14:36:58", "%H:%M:%S")

# 计算时间差
delta = time2 - time1
print(delta.total_seconds())  # Output: 7322.0

处理不同格式的日期字符串

import datetime

date_string1 = "2024-07-18"
date_string2 = "18/07/2024"

# 将不同格式的日期字符串解析为日期对象
date1 = datetime.datetime.strptime(date_string1, "%Y-%m-%d").date()
date2 = datetime.datetime.strptime(date_string2, "%d/%m/%Y").date()

print(date1)  # Output: 2024-07-18
print(date2)  # Output: 2024-07-18

按指定格式输出当前时间

import datetime

now = datetime.datetime.now()

# 按不同格式输出当前时间
print(now.strftime("%Y-%m-%d %H:%M:%S"))  # Output: 2024-07-18 12:34:56
print(now.strftime("%A, %d %B %Y %I:%M:%S %p"))  # Output: Thursday, 18 July 2024 12:34:56 PM

计算特定日期之后的日期

import datetime

# 当前日期
now = datetime.date.today()

# 计算30天后的日期
future_date = now + datetime.timedelta(days=30)
print(future_date)  # Output: 2024-08-17

Python的datetime模块提供了丰富的功能来处理日期和时间。通过了解和掌握datetime模块中的各个类和方法,我们可以轻松完成日期和时间的创建、格式化、计算以及时区处理等任务。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值