Python 日期和时间的使用技巧汇总

目录

一、获取时间

1、导入时间datetime模块

2、格式化时间

3、示例

二、计算时间

1、创建 timedelta 对象

2、日期加减

3、计算日期差值

三、获取日期部分数据

四、时区处理

1、安装pytz库

2、引用并使用


一、获取时间

1、导入时间datetime模块

        在Python中datetime模块在处理时间和日期方面提供了非常强大的功能,首先需要导入此模块

import datetime  导入datetime模块

2、格式化时间

        格式化常用函数:strptime、strftime,两者区别:

  • strptime: 将字符串解析为 datetime 对象。
  • strftime: 将 datetime 对象格式化为字符串。

3、示例

import datetime

#格式化获取当前时间
def get_current_time():
    return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")


if __name__ == '__main__':
    print("当前的时间是:",get_current_time())

输出

当前的时间是: 2025-03-09 11:10:11

解释

1、datetime.datetime.now()获取当前的日期和时间,精确到毫秒;

2、strftime函数,格式化日期按照特定的格式显示,具体格式如下:

%Y代表四位数的年份,%m代表月份,%d是日,%H是小时(24小时制),%M是分钟,%S是秒。


二、计算时间

    timedelta 是 Python 中 datetime 模块中的一个类,用于表示两个日期或时间之间的差值。它可以用于对日期和时间进行加减操作。timedelta 的主要参数包括 dayssecondsmicrosecondsmillisecondsminuteshours 和 weeks,默认值均为 0。

1、创建 timedelta 对象

        通过指定不同的参数来创建一个 timedelta 对象。例如:

    days_1 =datetime.timedelta(days=1) # 改变时间间隔 1天
    hour_1 =datetime.timedelta(hours=1) # 改变时间间隔 1小时
    minute_1 =datetime.timedelta(minutes=1) # 改变时间间隔 1分钟
    second_1 =datetime.timedelta(seconds=1) # 改变时间间隔 1秒
    milli_1 =datetime.timedelta(milliseconds=1) # 改变时间间隔 1毫秒
    micro_1 =datetime.timedelta(microseconds=1) # 改变时间间隔 1微秒
    week_1 =datetime.timedelta(weeks=1) # 改变时间间隔 1周
    all_1 =datetime.timedelta(days=1, hours=1, minutes=1, seconds=1, milliseconds=1, microseconds=1) # 改变时间间隔 1天1小时1分钟1秒1毫秒1微秒

2、日期加减

        使用 timedelta 对 datetime 对象进行加减操作。例如:

    now = datetime.datetime.now()
    tomorrow = now + datetime.timedelta(days=1) # 明天的日期
    yesterday = now - datetime.timedelta(days=1) # 昨天的日期
    now + datetime.timedelta(hours=1) # 1小时后的日期
    now + datetime.timedelta(minutes=1) # 1分钟后的日期
    now + datetime.timedelta(seconds=1) # 1秒后的日期
    print("当前的时间是:", now.strftime("%Y-%m-%d %H:%M:%S"))
    print("明天的日期是:", tomorrow.strftime("%Y-%m-%d"))
    print("昨天的日期是:", yesterday.strftime("%Y-%m-%d"))
    print("1小时后的日期是:", addhour_1.strftime("%Y-%m-%d %H:%M:%S"))
    print("1分钟后的日期是:", addminute_1.strftime("%Y-%m-%d %H:%M:%S"))
    print("1秒后的日期是:", addsecond_1.strftime("%Y-%m-%d %H:%M:%S"))

        输出结果:

当前的时间是: 2025-03-10 23:06:51
明天的日期是: 2025-03-11
昨天的日期是: 2025-03-09
1小时后的日期是: 2025-03-11 00:06:51
1分钟后的日期是: 2025-03-10 23:07:51
1秒后的日期是: 2025-03-10 23:06:52

3、计算日期差值

        通过减法操作得到两个 datetime 对象之间的 timedelta 对象,然后访问其属性(如 daysseconds 等)来获取具体的差值。例如:

    start_time = datetime.datetime(2021, 1, 1)
    end_time = datetime.datetime(2021, 1, 10)
    delta = end_time - start_time
    print('两个日期相差的天数:', delta.days)  #    # 两个日期相差的天数
    print('两个日期相差的秒数:', delta.seconds)  #   # 两个日期相差的秒数
    print('两个日期相差的毫秒数:', delta.microseconds)  #  # 两个日期相差的微秒数

输出结果:

两个日期相差的天数: 9
两个日期相差的秒数: 0
两个日期相差的毫秒数: 0

解释:

delta 的 days 属性表示两个日期之间的天数差异,而 seconds 和 microseconds 属性则表示在天数差异之外的时间差异。由于 start_time 和 end_time 的时间部分都是 00:00:00,因此 delta.seconds 和 delta.microseconds 都为 0。

        若计算两个日期之间的时间差异(包括天数和时间),你需要确保 start_time 和 end_time 包含了具体的时间信息。例如:

    start_time = datetime.datetime(2021, 1, 1, 12, 0, 0)  # 设置为 2021年1月1日 12:00:00
    end_time = datetime.datetime(2021, 1, 10, 14, 30, 15)  # 设置为 2021年1月10日 14:30:15
    delta = end_time - start_time
    print('两个日期相差的天数:', delta.days)
    print('两个日期相差的小时数:', delta.total_seconds() // 3600)  # 两个日期相差的小时数
    print('两个日期相差的分钟数:', delta.total_seconds() // 60)  # 两个日期相差的分钟数
    print('两个日期相差的秒数:', delta.total_seconds())  # 两个日期相差的秒数
    print('两个日期中的小时数相差的数量:', delta.seconds // 3600)  # 两个日期相差的小时数
    print('两个日期中的分钟数相差的数量:', delta.seconds // 60)  # 两个日期相差的分钟数
    print('两个日期相差的秒数:', delta.seconds)

输出结果:

两个日期相差的天数: 9
两个日期相差的小时数: 218.0
两个日期相差的分钟数: 13110.0
两个日期相差的秒数: 786615.0
两个日期中的小时数相差的数量: 2
两个日期中的分钟数相差的数量: 150
两个日期相差的秒数: 9015

三、获取日期部分数据

    date_only = now.date()
    time_only = now.time()
    years_only =now.year  # 获取当前年份
    month_only = now.month  # 获取当前月份
    day_only = now.day  # 获取当前日期
    hour_only = now.hour  # 获取当前小时
    minute_only = now.minute  # 获取当前分钟
    second_only = now.second  # 获取当前秒
    microsecond_only = now.microsecond  # 获取当前微秒
    weekday_only = now.weekday()  # 获取今天星期几,0代表星期一,6代表星期日
    weekday_only_iso = now.isoweekday()  # 获取今天星期几,1代表星期一,7代表星期日
    print("今天日期:", date_only)
    print("当前时间:", time_only)
    print("当前年份:", years_only)
    print("当前月份:", month_only)
    print("当前日期:", day_only)
    print("当前小时:", hour_only)
    print("当前分钟:", minute_only)
    print("当前秒:", second_only)
    print("当前微秒:", microsecond_only)
    print("今天星期几:", weekday_only)
    print("今天星期几(ISO):", weekday_only_iso)

输出:

今天日期: 2025-03-11
当前时间: 11:03:44.049305
当前年份: 2025
当前月份: 3
当前日期: 11
当前小时: 11
当前分钟: 3
当前秒: 44
当前微秒: 49305
今天星期几: 1
今天星期几(ISO): 2

说明:

datetime对象的.date()、.time()方法分别用来提取日期和时间的信息;

datetime对象的.year、.month、.day等属性分别用来提取年、月、日等部分时间信息;


四、时区处理

使用pytz库来处理不同时区,方便处理不同时区的数据。

1、安装pytz库

pip install pytz

2、引用并使用

    from datetime import datetime
    import pytz
 
    utc_now = datetime.now(pytz.utc)  # 获取UTC时间
    shanghai_tz = pytz.timezone('Asia/Shanghai') #指定时区
    shanghai_time = utc_now.astimezone(shanghai_tz)
    print("UTC的当前时间:", utc_now.strftime("%Y-%m-%d %H:%M:%S"))
    print("上海的当前时间:", shanghai_time.strftime("%Y-%m-%d %H:%M:%S"))

输出结果:

UTC的当前时间: 2025-03-11 03:23:18
上海的当前时间: 2025-03-11 11:23:18

        这篇博客到这里就接近尾声了,希望我的分享能给您带来一些启发和帮助,别忘了点赞、收藏。您的每一次互动、鼓励是我持续创作的动力!期待与您再次相遇,共同探索更广阔的世界!

猜你喜欢

转载自blog.csdn.net/u013954557/article/details/146128997