欢迎访问宙启技术站
智能推送

在Python中使用日期和时间函数:datetime模块介绍

发布时间:2023-06-23 13:57:59

Python是一种功能强大的编程语言,可以用于执行各种编程任务,包括处理日期和时间。_datetime_模块是Python中的一个内置模块,提供了一些用于处理日期和时间的函数。

在此文中,我们将介绍datetime模块并讨论如何在Python中使用各种日期和时间函数。

## 前置内容

在介绍datetime模块之前,我们需要先补充两个概念:

- 时间戳

- 时间戳是指从某个固定时间(例如1970年1月1日00:00:00,也称为“UNIX时间戳”)开始的秒数。

- 对于一个特定的日期和时间,可以使用Python中的time模块中的time函数计算其时间戳,即:

    import time

    timestamp = time.time()
    print("当前时间戳为:", timestamp)
    

输出:

    当前时间戳为: 1602759157.8512454
    

- 时间间隔

- Python中表示时间间隔的主要类是_timedelta_。

- 时间间隔是指两个日期和时间之间的差异,可以用于执行日期和时间的算术运算。

## datetime模块介绍

datetime模块提供了三个主要类:_date_、_time_和_datetime_,它们分别表示日期、时间和日期/时间。这些类的构造函数为:

- date(year, month, day)

- year、month和day是整数,表示日期的年、月和日。

- 示例:

    from datetime import date

    my_date = date(2020, 10, 15)
    print("日期是:", my_date)
    

输出:

    日期是: 2020-10-15
    

- time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

- hour、minute、second和microsecond是整数,表示时间的小时、分钟、秒和微秒。

- tzinfo是时区信息(默认为None)。

- 示例:

    from datetime import time

    my_time = time(15, 30, 45)
    print("时间是:", my_time)
    

输出:

    时间是: 15:30:45
    

- datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)

- year、month、day、hour、minute、second和microsecond分别表示年、月、日、小时、分钟、秒和微秒。

- tzinfo是时区信息(默认为None)。

- 示例:

    from datetime import datetime

    my_datetime = datetime(2020, 10, 15, 15, 30, 45)
    print("日期时间是:", my_datetime)
    

输出:

    日期时间是: 2020-10-15 15:30:45
    

datetime模块还提供了一些方法来获取当前日期、时间和日期/时间:

- datetime.today()

- 返回当前日期和时间,不带时区信息。

- 示例:

    from datetime import datetime

    my_datetime = datetime.today()
    print("今天是:", my_datetime)
    

输出:

    今天是: 2020-10-15 21:55:12.187224
    

- datetime.now(tz=None)

- 返回当前日期和时间,可选地包括时区信息。

- 示例:

    from datetime import datetime

    my_datetime = datetime.now()
    print("现在是:", my_datetime)
    

输出:

    现在是: 2020-10-15 21:56:34.204042
    

- datetime.utcnow()

- 返回当前UTC日期和时间(不带时区信息)。

- 示例:

    from datetime import datetime

    my_datetime = datetime.utcnow()
    print("当前UTC时间是:", my_datetime)
    

输出:

    当前UTC时间是: 2020-10-15 13:58:20.041660
    

datetime模块还提供了一些方法来格式化日期和时间:

- strftime(format)

- 将日期/时间对象格式化为字符串。

- format是格式化指令(例如“%Y”表示年份,详见下文)。

- 示例:

    from datetime import datetime

    my_datetime = datetime(2020, 10, 15, 15, 30, 45)
    formatted_datetime = my_datetime.strftime("%Y-%m-%d %H:%M:%S")
    print("格式化后的日期时间是:", formatted_datetime)
    

输出:

    格式化后的日期时间是: 2020-10-15 15:30:45
    

- strptime(date_string, format)

- 将字符串解析为日期/时间对象。

- date_string是要解析的字符串。

- format是日期/时间格式,应与date_string匹配(例如“%Y-%m-%d”表示YYYY-MM-DD格式的日期,详见下文)。

- 示例:

    from datetime import datetime

    date_string = "2020-10-15 15:30:45"
    my_datetime = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
    print("解析出的日期时间是:", my_datetime)
    

输出:

    解析出的日期时间是: 2020-10-15 15:30:45
    

## 日期和时间的常见格式化指令

格式化指令是将日期/时间对象格式化为字符串的指令。下面是一些常用的格式化指令:

- %Y:四位数表示的年份(例如“2020”)。

- %y:两位数表示的年份(例如“20”)。

- %m:表示月份的数字(01~12)。

- %B:表示月份的全名(例如“January”)。

- %b:表示月份的缩写(例如“Jan”)。

- %d:表示月份中的日期(01~31)。

- %H:小时(00~23)。

- %M:分钟(00~59)。

- %S:秒(00~59)。

- %f:宽度为6的微秒。

- %a:星期的缩写(例如“Mon”)。

- %A:星期的全名(例如“Monday”)。

- %w:星期的数字表示(0表示周日,1表示周一,以此类推)。

- %z:UTC时区偏移量(例如“+0300”)。

- %Z:时区的名称(例如“EET”)。

## 时间的计算

在Python中,可以使用timedelta类执行日期和时间的算术运算。timedelta类表示两个日期或时间间隔之间的差异。例如,可以使用timedelta计算两个日期之间的天数差异,或计算两个时间之间的小时差异。

下面是一些示例:

from datetime import datetime, timedelta

# 计算两个日期之间的天数差异
date1 = datetime(2020, 10, 10)
date2 = datetime(2020, 10, 15)
date_diff = date2 - date1
print("日期之间的天数差异是:", date_diff.days)

# 计算两个时间之间的小时差异
time1 = datetime(2020, 10, 15, 15, 30, 45)
time2 = datetime(2020, 10, 15, 18, 45, 55)
time_diff = time2 - time1
print("时间之间的小时差异是:", time_diff.seconds // 3600)

输出:

日期之间的天数差异是: 5
时间之间的小时差异是: 3

## 总结

datetime模块提供了丰富的日期和时间函数