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

全面了解Python中的日期和时间函数

发布时间:2023-05-26 18:39:59

Python 是一种高级编程语言,在程序设计中广泛使用。日期和时间为编程人员提供了可用性和实用性等很多的东西。Python 中已经内置了一些强大的日期和时间函数,其主要目的是处理各种日期和时间的操作。在这篇文章中,我们将探讨这些日期和时间函数的各种用法及其示例。

1. datetime 模块

首先让我们看看 Python 日期和时间函数的主要模块,即 datetime。 datetime 模块是用于处理时间和日期数据的标准模块,它定义了下列类:

1.1 datetime 类

datetime 类旨在处理年、月、日、时、分、秒和微秒等信息。以下是 datetime 类的各种方法:

datetime.monday(): 返回星期一

datetime.time(): 返回 datetime 对象的时间部分。

datetime.date(): 返回 datetime 对象的日期部分。

datetime.today(): 返回当前日期和时间(本地时间)

datetime.now(): 返回当前日期和时间(本地时间)

datetime.utcnow(): 返回当前日期和时间(UTC时间)

datetime.fromtimestamp(timestamp): 根据时间戳创建 datetime 对象。

下面是一些 datetime 使用的示例:

from datetime import datetime

# 创建 datetime 对象

now = datetime.now()

# 返回 datetime 对象中的时间和日期

print("当前时间:", now)

print("日期: ", now.date())

print("时间: ", now.time())

# 格式化当前时间

print(now.strftime("%Y-%m-%d %H:%M:%S"))

# 返回星期一

print(now.strftime("%A"))

# 根据时间戳创建 datetime 对象

timestamp = 1592660199

dt_object = datetime.fromtimestamp(timestamp)

print("datetime 对象:", dt_object) 

输出结果如下:

当前时间: 2021-09-17 14:55:25.970426

日期:  2021-09-17

时间:  14:55:25.970426

2021-09-17 14:55:25

Friday

datetime 对象: 2020-06-20 22:56:39

1.2 timedelta 类

timedelta 类是 datetime 模块中的一个小型类,用于计算日期和时间之间的差异。 timedelta 可以添加和减少时间,以及计算时间间隔和时间点之间的差异。

以下是 timedelta 类的各种方法:

timedelta.days: 返回天数。

timedelta.seconds: 返回秒数。

timedelta.microseconds: 返回毫秒数。

timedelta.total_seconds(): 返回一个拥有毫秒数的整数。

下面是一些 timedelta 的示例:

from datetime import datetime, timedelta

dt1 = datetime(2021, 10, 23)  

dt2 = datetime(2021, 10, 25)  

td = dt2 - dt1

print("天数差异:", td.days) 

print("秒差异:", td.seconds) 

print("微秒差异:", td.microseconds) 

print("总秒数差异:", td.total_seconds()) 

输出结果如下:

天数差异: 2

秒差异: 0

微秒差异: 0

总秒数差异: 172800.0

2. time 模块

Python 的 time 模块包含了许多可以处理时间的函数。这些函数可以检索当前时间和日期、将时间转换为各种格式、记录函数等等。

以下是 time 类的各种方法:

time.time(): 返回当前时间的时间戳。

time.sleep(s): 暂停 s 秒钟。

time.strftime(format[, t]): 将 time 对象格式化为时间字符串。

time.strptime(string[, format]): 将时间字符串解析为 time 对象。

time.gmtime([secs]): 将 secs 转换为 UTC 时间。

time.localtime([secs]): 将 secs 转换为本地时间。

以下是 time 模块的一些示例:

import time

# 返回当前时间的时间戳

secs = time.time()

print("当前时间戳:", secs)

# 暂停 2 秒

time.sleep(2)

print("暂停 2 秒钟")

# 时间格式化

now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

print("当前时间:", now)

# 将时间字符串解析为 time 对象

timestr = "2021-09-17 22:22:22"

t = time.strptime(timestr, "%Y-%m-%d %H:%M:%S")

print("time 对象:", t)

输出结果如下:

当前时间戳: 1631851938.3136876

暂停 2 秒钟

当前时间: 2021-09-17 15:25:40

time 对象: time.struct_time(tm_year=2021, tm_mon=9, tm_mday=17, tm_hour=22, tm_min=22, tm_sec=22, tm_wday=4, tm_yday=260, tm_isdst=-1)

3. calendar 模块

Python 的 calendar 模块可以帮助我们执行日历相关的操作。它可以生成各种格式的日历,包括年、月、周和一些美学样式。

以下是 calendar 模块的各种方法:

calendar.month(year, month): 返回指定月份的日历。

calendar.calendar(year): 返回指定年份的完整年历。

calendar.weekday(year, month, day): 返回指定日期的星期数(0-6,星期一到星期日)。

calendar.isleap(year): 如果给定 year 是闰年,则返回 True,否则返回 False。

以下是 calendar 模块的一些示例:

import calendar

# 返回指定月份的日历

print(calendar.month(2021, 9))

# 返回指定年份的完整年历

print(calendar.calendar(2021))

# 返回指定日期的星期数

print(calendar.weekday(2021, 9, 17))

# 判断 2024 是否是闰年

print(calendar.isleap(2024))

输出结果如下:

    September 2021

Mo Tu We Th Fr Sa Su

       1  2  3  4  5

 6  7  8  9 10 11 12

13 14 15 16 17 18 19

20 21 22 23 24 25 26

27 28 29 30

                                  2021

      January                   February                   March

Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

             1  2  3       1  2  3  4  5  6  7       1  2  3  4  5  6  7

 4  5  6  7  8  9 10       8  9 10 11 12 13 14       8  9 10 11 12 13 14

11 12 13 14 15 16 17      15 16 17 18 19 20 21      15 16 17 18 19 20 21

18 19 20 21 22 23 24      22 23 24 25 26 27 28      22 23 24 25 26 27 28

25 26 27 28 29 30 31                                     29 30 31

       April                      May                       June

Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su

          1  2  3  4                      1  2          1  2  3  4  5  6

 5  6  7  8  9 10 11       3  4  5  6  7  8  9       7  8  9 10 11 12 13

12 13 14 15 16 17 18      10 11 12 13 14 15 16      14 15 16 17 18 19 20

19 20 21 22 23 24 25      17 18 19 20 21 22 23      21 22 23