datetime库在蓝桥杯Python组中的使用

datetime 是 Python 标准库中的一个模块,用于处理日期和时间。它提供了多种类来表示日期、时间、时间和日期的组合等,并支持各种操作如创建、格式化、解析、计算等。
官网:datetime — 基本日期和时间类型

主要类

datetime.date:表示日期(年、月、日)。
datetime.time:表示时间(时、分、秒、微秒)。
datetime.datetime:表示日期和时间的组合。
datetime.timedelta:表示两个日期或时间之间的差异。

1.导入模块

from datetime import datetime, date, time, timedelta

2.创建date对象

# 当前日期
today = date.today()
print("今天的日期:", today)

# 指定日期
specified_date = date(2025, 2, 8)
print("指定日期:", specified_date)

输出

今天的日期: 2025-02-08
指定日期: 2025-02-08

3.创建time对象

# 特定时间
specific_time = time(14, 30, 59)  # 14:30:59
print("特定时间:", specific_time)

输出

特定时间: 14:30:59

4.创建 datetime 对象

# 当前日期和时间
now = datetime.now()
print("当前日期和时间:", now)

# 特定日期和时间
specific_datetime = datetime(2024, 2, 8, 14, 30, 59)
print("特定日期和时间:", specific_datetime)

输出

当前日期和时间: 2025-02-08 02:29:40.887952
特定日期和时间: 2024-02-08 14:30:59

格式化日期和时间

可以使用 strftime 方法将 datetime 对象格式化为字符串,或者使用 strptime 方法将字符串解析为 datetime 对象。

# 格式化日期和时间
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的当前日期和时间:", formatted_now)

# 解析字符串为 datetime 对象
date_string = "2024-02-08 14:30:59"
parsed_datetime = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print("解析后的日期和时间:", parsed_datetime)

常用格式化代码:

%Y: 年(四位数)
%m: 月(两位数)
%d: 日(两位数)
%H: 小时(24小时制,两位数)
%M: 分钟(两位数)
%S: 秒(两位数)

计算日期和时间差

使用 timedelta 类来进行日期和时间的加减运算。

# 当前日期和时间
now = datetime.now()
print("当前日期和时间:", now)

# 创建一个时间间隔
delta = timedelta(days=5, hours=3, minutes=30)

# 当前日期加上时间间隔
future_date = now + delta
print("未来的日期和时间:", future_date)

# 当前日期减去时间间隔
past_date = now - delta
print("过去的日期和时间:", past_date)

输出

当前日期和时间: 2025-02-08 02:28:14.850259
未来的日期和时间: 2025-02-13 05:58:14.850259
过去的日期和时间: 2025-02-02 22:58:14.850259

获取日期和时间的部分信息

可以从 datetime 或 date 对象中提取部分信息。

# 获取年份
year = now.year
print("年份:", year)

# 获取月份
month = now.month
print("月份:", month)

# 获取天
day = now.day
print("天:", day)

# 获取小时
hour = now.hour
print("小时:", hour)

# 获取分钟
minute = now.minute
print("分钟:", minute)

# 获取秒
second = now.second
print("秒:", second)

# 获取星期几 (0=Monday, 6=Sunday)
weekday = now.weekday()
print("星期几:", weekday)

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

from datetime import datetime

def days_between(date_str1, date_str2):
    # 将字符串解析为 datetime 对象
    date_format = "%Y-%m-%d"
    date1 = datetime.strptime(date_str1, date_format)
    date2 = datetime.strptime(date_str2, date_format)
    
    # 计算日期差
    delta = date2 - date1
    return abs(delta.days)

# 测试
date_str1 = "2024-01-01"
date_str2 = "2024-02-08"
print(f"两个日期之间的天数差: {days_between(date_str1, date_str2)}")

例题1

题目:特殊日期
在这里插入图片描述

代码

"""
# 导入模块
import datetime

# 求数字各位数之和
def Sum(x:int)->int:
    res = 0
    while x:
        res+=x%10
        x//=10
    return res
# 输入区间
start = datetime.date(1900,1,1)
end = datetime.date(9999,12,31)

# 创建一个表示一天的时间间隔
dt = datetime.timedelta(days=1)

# 总数量
cnt =0

while start<end:
    y = Sum(start.year)
    md = Sum(start.month)+Sum(start.day)
    if y==md:
        cnt+=1
    start += dt

print(cnt)
"""
print(70910)

例题2

题目:完全日期
在这里插入图片描述

代码

from datetime import datetime, timedelta

def sum_of_digits(date_str):
    """计算日期字符串中所有数字的和"""
    return sum(int(digit) for digit in date_str)


def count_perfect_dates(start_date, end_date):
    """计算在指定日期范围内完全日期的数量"""
    perfect_squares = {i ** 2 for i in range(1, 10)}  # 完全平方数集合
    current_date = start_date
    count = 0

    while current_date <= end_date:
        date_str = current_date.strftime('%Y%m%d')  # 格式化日期为字符串
        digits_sum = sum_of_digits(date_str)
        if digits_sum in perfect_squares:
            count += 1
        current_date += timedelta(days=1)

    return count

start_date = datetime.strptime('2001-01-01', '%Y-%m-%d')
end_date = datetime.strptime('2021-12-31', '%Y-%m-%d')

result = count_perfect_dates(start_date, end_date)
print( result) # 977
### 如何在蓝桥杯竞赛中使用Python的`datetime` #### 使用`datetime`处理日期和时间 为了有效利用Python中的`datetime`来解决蓝桥杯比赛中的问题,掌握该的基础函数至关重要。例如,可以通过`strftime`方法自定义格式化输出的时间字符串[^4]。 ```python import datetime now = datetime.datetime.now() formatted_time = now.strftime('%Y-%m-%d %H:%M:%S') print(formatted_time) ``` 这段代码展示了获取当前时间和将其格式化为年-月-日 小时:分钟:秒的形式打印出来的方法。 #### 计算两个日期之间的差异 另一个常见的应用场景是在给定起始结束日期的情况下计算天数差: ```python from datetime import date start_date = date(2023, 1, 1) end_date = date(2023, 12, 31) delta = end_date - start_date days_between = delta.days print(days_between) ``` 此段代码通过创建两个`date`对象并相减得到一个表示两者之间差距的对象`timedelta`,进而访问其`.days`属性获得具体相差多少天。 #### 设置特定时区 考虑到不同地区可能存在不同时区的需求,在某些题目里也需要设置指定时区下的时间操作: ```python from datetime import datetime, timezone, timedelta utc_offset = timedelta(hours=8) # UTC+8 target_timezone = timezone(utc_offset) current_time_in_target_tz = datetime.now(target_timezone).strftime("%Y-%m-%d %H:%M:%S") print(current_time_in_target_tz) ``` 上述例子说明了如何设定中国标准时间(UTC+8),并通过调用`datetime.now()`传入目标时区参数实现本地化显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值