当前位置:   article > 正文

Python 高级构造:Python DateTime 模块_python datetime模块

python datetime模块

抽象

Python 中提供了 Python DateTime 模块,用于处理日期和时间。在 python 中,DateTime 是一个内置模块,而不是一个原始数据类型,我们只需要导入上面提到的模块即可将日期作为日期对象使用。

Python 日期时间简介

有没有想过银行系统如何管理日期和时间,比如他们如何计算贷款的剩余期限。那么,答案就在于python的python datetime模块的功能。继续阅读以了解更多信息。

Python 中提供了 DateTime 模块,用于处理日期和时间。在python DateTime中,是一个内置模块,而不是一个原始数据类型,我们只需要导入上面提到的模块就可以将日期作为日期对象使用。

在python的datetime python模块中有几个类,可以帮助处理日期和时间。此外,这些类有很多函数,我们可以从中提取日期和时间。

如何使用 Date 和 Datetime 类?

首先,您需要使用以下代码导入 python 的 python datetime 模块,以便您可以使用其内置类来获取当前日期和时间等。

 
import datetime
'
运行
  1. 现在,我们可以使用 datetime 模块的 date 类。 此类有助于将数字日期属性转换为 YYYY-MM-DD 形式的日期格式。 此类接受 3 个属性:年、月和日,顺序如下(年、月、日)。

语法

 
  1. import datetime
  2. var1 = datetime.date(YYYY, MM, DD)
  3. # This will convert the numeral date to the date object
'
运行

 
  1. import datetime
  2. userdate = datetime.date(2021, 10, 20)
  3. print('userdate: ', userdate)
  4. print('type of userdate: ', type(userdate))
'
运行

输出:

 
  1. success
  2. userdate: 2021-10-20
  3. type of userdate: <class 'datetime.date'>

代码说明

  • 在上面的代码中,我们导入了 python datetime 库。
  • 然后,我们将日期时间对象保存到变量中。
  • 然后我们打印变量以及输出如下的变量类型。
  • 现在,我们可以使用 datetime 模块的 datetime python 类。
  • 此类有助于将数字日期和时间属性转换为 YYYY-MM-DD hr:min:s:ms 形式的日期时间格式。

此类接受 7 个属性 Year、Month、Day、Hour、Minutes、Seconds、MilliSeconds,顺序如下(年、月、日、小时、分钟、秒、毫秒)。

语法

 
  1. import datetime
  2. var1 = datetime.datetime(YYYY, MM, DD, hr, min, s, ms)
  3. # This will convert the numeral date to the datetime object in the form of
  4. YYYY-MM-DD hr:min:s:ms.
'
运行

 
  1. import datetime
  2. userdatetime = datetime.datetime(2019, 5, 10, 17, 30, 20, 154236)
  3. print('userdatetime: ', userdatetime)
  4. print('type of userdatetime: ', type(userdatetime))

输出:

 
  1. success
  2. userdatetime: 2019-05-10 14:30:20.154236
  3. type of userdatetime: <class 'datetime.datetime'>
'
运行

代码说明

  • 在上面的代码中,我们导入了日期时间库。
  • 然后,我们将日期时间对象保存到变量中。
  • 然后我们打印变量以及输出如下的变量类型。

DateTime Python 模块的类

日期

现在,我们可以使用 datetime 模块的 date 类。

此类有助于将数字日期属性转换为 YYYY-MM-DD 形式的日期格式。

此类接受 3 个属性:年、月和日,顺序如下(年、月、日)。

语法

 
  1. import datetime
  2. var1 = datetime.date(YYYY, MM, DD)
  3. # This will convert the numeral date to the date object

 
  1. import datetime
  2. userdate = datetime.date(2021, 9, 15)
  3. print('userdate: ', userdate)
  4. print('type of userdate: ', type(userdate))
'
运行

输出

 
  1. userdate: 2021-09-15
  2. type of userdate: <class 'datetime.date'>

代码说明

  • 在上面的代码中,我们导入了日期时间库。
  • 然后,我们将日期时间对象保存到变量中。
  • 然后我们打印变量以及输出如下的变量类型。

正如我们所看到的,我们已经将数字数据更改为 datetime 对象,并且可以通过下面打印的对象类型来验证这一点。

时间

现在,我们可以使用 python datetime 模块的 time 类。

Time 类返回用户所在区域的本地时间。

时间类接受 5 个属性:小时、分钟、秒、微秒和折叠,顺序如下(时、分、秒、微秒、折叠)。

上面提到的所有属性都是可选的,但所有属性的初始值都是 0。

关于时间类要记住的要点

  • 如果我们没有在时间类中传递任何属性,那么它将返回默认时间,即 00:00:00。
  • 通过在时间类中指定特定属性,它将设置其值并根据用户要求提供时间。

语法

 
  1. import datetime
  2. # returns the time with all it's value as 0 like 00:00:00
  3. var1 = datetime.time()
  4. # returns the time with the value which are specified by the user in the attributes
  5. var2 = datetime.time(hour=?, minute=?, second=?, microsecond=?)
'
运行

 
  1. import datetime
  2. time1 = datetime.time()
  3. print('without passing any attribute: ', time1)
  4. time2 = datetime.time(hour=12, minute=55, second=50)
  5. print('by passing hour, minute and second attributes: ', time2)
  6. time1 = time1.replace(hour=17)
  7. print('by replacing the hour attribute in time1: ', time1)
  8. time2 = time2.replace(minute=00)
  9. print('by replacing the minute attribute in time2: ', time2)

输出

 
  1. without passing any attribute: 00:00:00
  2. by passing hour, minute and second attributes: 12:55:50
  3. by replacing the hour attribute in time1: 17:00:00
  4. by replacing the minute attribute in time2: 12:00:50
'
运行

代码说明

  • 在上面的代码中,我们导入了 python datetime 库。
  • 然后,我们将两种不同类型的时间对象保存到变量中(一种没有属性,另一种具有某些属性)。
  • 然后我们使用 replace() 来更改上述生成时间的值。
  • 然后,我们打印变量,根据我们在时间类中传递的属性来获取不同的时间。

日期时间

现在,我们可以使用 datetime 模块的 datetime python 类。 此类有助于将数字日期和时间属性转换为 YYYY-MM-DD hr:min:s:ms 形式的日期时间格式。

此类接受 7 个属性 Year、Month、Day、Hour、Minutes、Seconds、MilliSeconds,顺序如下(年、月、日、小时、分钟、秒、毫秒)。

语法

 
  1. import datetime
  2. var1 = datetime.datetime(YYYY, MM, DD, hr, min, s, ms)
  3. # This will convert the numeral date to the datetime object in the form of
  4. YYYY-MM-DD hr:min:s:ms.

 
  1. import datetime
  2. userdatetime = datetime.datetime(2021, 9, 15, 20, 55, 20, 562789)
  3. print('userdatetime: ', userdatetime)
  4. print('type of userdatetime: ', type(userdatetime))
'
运行

输出

 
  1. userdatetime: 2021-09-15 20:55:20.562789
  2. type of userdatetime: <class 'datetime.datetime'>

代码说明

  • 在上面的代码中,我们导入了日期时间库。
  • 然后,我们将日期时间对象保存到变量中。
  • 然后我们打印变量以及输出如下的变量类型。

正如我们所看到的,我们已将数字 python datatime 更改为 datetime 对象,并且可以通过下面打印的对象类型进行验证。

时间增量

现在,我们可以使用 datetime 模块的 timedelta 类。

此类有助于查找 datetime.timedelta 类提供的 2 个日期/时间之间的差异。无论日期/时间的差异是正数还是负数。

此类接受多个参数,如周、天、小时、分钟、秒、毫秒和微秒。而且,这些参数的默认值为零。

语法

 
  1. import datetime
  2. var1 = datetime.timedelta(weeks=?, days=?, hours=?, minutes=?, seconds=?,
  3. milliseconds=?, microsecond=?)
  4. # This will return the exact date & time object by using all the attributes
  5. used by the user.
'
运行

 
  1. import datetime
  2. data1= datetime.timedelta(days=1, hours=23, minutes=30)
  3. print('data1: ', data1)
  4. data2= datetime.timedelta(days=4, hours=11, minutes=30)
  5. print('data2: ', data2)
  6. difference = data2-data1
  7. print('difference between data2 and data1: ', difference)

输出

 
  1. data1: 1 day, 23:30:00
  2. data2: 4 days, 11:30:00
  3. difference between data2 and data1: 2 days, 12:00:00
'
运行

代码说明

  • 在上面的代码中,我们导入了日期时间库。
  • 然后,我们将日期时间对象以 timedelta 格式的形式保存到变量中。
  • 然后我们打印上面生成的 2 天之间的差异。

正如我们所看到的,我们已经打印了下面 2 个日期的差异。

Tzinfo的

我们用来获取当前系统时间的函数 .now() 没有任何关于时区的信息。在大多数情况下,需要时区信息。因此,在这种情况下,使用 tzinfo 抽象类。由于它是一个抽象类,所以它不能直接实例化。

datetime 对象的构造函数接受 Tzinfo 类的实例。

Naive & Aware Datetime 对象

  • 朴素日期时间对象:没有任何关于时区的信息的日期时间对象被视为朴素日期时间对象。
  • 幼稚 datetime 对象的 tzinfo 值为 NONE。
  • Aware Datetime 对象:包含有关时区信息的 datetime 对象被视为 aware datetime 对象。

时区

时区代表标准时间,这取决于考虑世界的哪个部分。

datetime.now() 返回用户所在的部分的本地时间。当地时间与该特定地区的时区无关。

我们可以再导入一个内置模块 pytz,以使用世界不同地区的时区。使用下面提到的代码导入模块:

 
import pytz 

pytz 库的基础知识

  1. 我们使用 pytz.utc 将 UTC 时间获取到 datetime.datetime.now() 函数中。UTC 时区输出末尾的 +00:00 表示 UTC 偏移量。
  2. 我们使用 pytz.timezone('US/CENTRAL') 将 'US/CENTRAL' 时间获取到 datetime.datetime.now() 函数中。UTC 时区输出末尾的 -05:00 表示“US/CENTRAL”区域的 UTC 偏移量。

语法

 
  1. import datetime
  2. #added another module for using different time zones.
  3. import pytz
  4. #return the local time of that area
  5. var1 = datetime.now()
  6. # return the standard utc time
  7. var2 = datetime.now(pytz.utc)
  8. # return the us/central timezone
  9. var3 = datetime.now(pytz.timezone('US/CENTRAL'))
'
运行

 
  1. import datetime
  2. import pytz
  3. localtime= datetime.datetime.now()
  4. print('local time: ', localtime)
  5. utctime = datetime.datetime.now(pytz.utc)
  6. print('UTC time zone: ', utctime)
  7. ustime = datetime.datetime.now(pytz.timezone('US/CENTRAL'))
  8. print('US time zone: ', ustime)
'
运行

输出

 
  1. local time: 2021-10-15 01:37:39.603581
  2. UTC time zone: 2021-10-14 20:07:39.603716+00:00
  3. US time zone: 2021-10-14 15:07:39.626474-05:00
'
运行

示例说明

  • 在上面的代码中,我们导入了 datetime 和 pytz 库。
  • 然后,我们根据时区将不同的日期时间对象保存到变量中。
  • 然后我们打印输出如下的变量。

日期类

.date() 文件

此类有助于将数字日期属性转换为 YYYY-MM-DD 形式的日期格式。

此类接受 3 个属性:年、月和日,顺序如下(年、月、日)。

语法

 
  1. import datetime
  2. var1 = datetime.date(YYYY, MM, DD)
  3. # This will convert the numeral date to the date object

 
  1. import datetime
  2. dateByUser = datetime.date(2018, 12, 31)
  3. print('dateByUser: ', dateByUser)
  4. print('type of dateByUser: ', type(dateByUser))
'
运行

输出

 
  1. dateByUser: 2018-12-31
  2. type of dateByUser: <class 'datetime.date'>

示例说明

  • 在上面的代码中,我们导入了日期时间库。
  • 然后,我们将日期时间对象保存到变量中。
  • 然后我们打印变量以及输出如下的变量类型。

正如我们所看到的,我们已将数字 datatime 更改为 datetime 对象,并且可以通过下面打印的对象类型来验证这一点。

.today() 格式

Date 类的此函数以“YYYY-MM-DD”的格式返回输出屏幕上的今天日期。

 
  1. import datetime
  2. print("today's date: ", datetime.date.today())
'
运行

输出

 
  1. today's date: 2021-10-16

.min

min 函数返回最早的可表示日期。这使用 3 个属性“MinYear”、“Month”和“Day”,顺序如下(datetime。MINYEAR、月、日)。

 
  1. import datetime
  2. print('earliest year which can be represented: ',
  3. datetime.date(datetime.MINYEAR, 12, 1))
'
运行

输出

 
earliest year which can be represented:  0001-12-01

。麦克斯

.max 函数返回最新的可表示日期。这使用 3 个属性“MaxYear”、“Month”和“Day”,顺序如下(datetime。MAXYEAR、月、日)。

 
  1. import datetime
  2. print('latest year which can be represented: ',
  3. datetime.date(datetime.MAXYEAR, 2, 25))
'
运行

输出

 
latest year which can be represented:  9999-02-25

。日

此函数返回用户输入的日期的天数。它给出了从 1 到 30/31(或指定月份中的精确天数)的计数,两者都包括在内。

 
  1. import datetime
  2. dateByUser = datetime.date(2020, 5, 27)
  3. print('day count of the date entered by the user: ', dateByUser.day)
'
运行

输出

 
day count of the date entered by the user:  27

。月

此函数返回用户输入的日期的月计数。它给出了从 1 到 12 的计数,两者都包括 1 和 12。

 
  1. import datetime
  2. dateByUser = datetime.date(2024, 2, 29)
  3. print('month count of the date entered by the user:', dateByUser.month)
'
运行

输出

 
month count of the date entered by the user: 2

。年

此函数返回用户输入的日期的年份计数。它给出了从 MINYEAR 到 MAXYEAR 的计数,两者都包括在内。

 
  1. import datetime
  2. dateByUser = datetime.date(2030, 10, 15)
  3. print('year of the date entered by the user:', dateByUser.year)
'
运行

输出

 
year of the date entered by the user: 2030

strftime()

此功能帮助我们以不同类型的格式表示日期,例如短/长日(周一、星期一)、短/长年(21、2021)、数字/字母月份(03、三月)。

下图表示用于表示不同类型格式的日期的符号。

 
  1. import datetime
  2. todaydatetime = datetime.datetime.now()
  3. print('current date and time: ', todaydatetime)
  4. print('fetched out year from current date: ', todaydatetime.strftime('%Y'))
  5. print('fetched out month from current date: ', todaydatetime.strftime('%B'))
  6. print('fetched out day from current date: ', todaydatetime.strftime('%A'))
  7. print('formatted the time from above generated date time: ', todaydatetime.strftime('%H:%M:%S'))
  8. print(todaydatetime.strftime('formatted both date and time: ', "%d/%m/%Y, %H:%M:%S"))
'
运行

输出

 
  1. current date and time: 2021-10-17 12:14:52.394962
  2. fetched out year from current date: 2021
  3. fetched out month from current date: October
  4. fetched out day from current date: Sunday
  5. formatted the time from above generated date time: 12:14:52
  6. formatted both date and time: 17/10/2021, 12:14:52
'
运行

示例说明

  1. 首先,我们将当前日期和时间存储到变量“todaydatetime”中。
  2. 存储日期后,我们打印生成的日期和时间的实际格式。
  3. 我们使用“%Y”从上述日期中提取年份。
  4. 我们使用“%B”从日期中提取月份。
  5. 我们使用“%A”从日期中提取日期。
  6. 我们使用不同的时间格式化程序“%H,%M&%S”来格式化时间。
  7. 最后,我们格式化时间和日期。

当前日期

我们有两种方法可以找出当前日期,如下所述:

  1. .today() 格式
  2. .now() 中

.today() 格式

.today() 用于返回当前本地日期。我们可以从 datetime 模块的 date 类中使用它来获取当前日期。

法典

 
  1. import datetime
  2. currentdate = datetime.date.today()
  3. print('current date: ', currentdate)
'
运行

输出

 
current date:  2021-10-17
'
运行

.now() 中

.now() 用于将当前本地日期和时间作为 datetime 对象返回。因此,我们可以做的是,我们可以格式化 datetime 对象以仅获取当前日期。

法典

 
  1. import datetime
  2. currentdate = datetime.datetime.now()
  3. print('raw current date and time generated', currentdate)
  4. print('current date formatted from date and time',
  5. currentdate.strftime("%d/%m/%Y"))
'
运行

输出

 
  1. raw current date and time generated 2021-10-17 12:40:15.974292
  2. current date formatted from date and time 17/10/2021

datetime.strptime()的使用

python datetime 模块的 datetime python 类有一个函数 strptime(),用于将时间戳字符串转换为 datetime python 对象。

.strptime() 接受 2 个属性 timestamp 和格式,我们可以将其转换为 datetime 对象。

语法

 
  1. import datetime
  2. var1 = datetime.strptime('TimeStamp', 'Format in which we want to print the datetime object')
  3. TimeStamps are represented as: 2021-01-02T10::52::69.125777
  4. and
  5. Formats are represented as: %Y-%B-%AT%H::%M::%S.%f
'
运行

 
  1. import datetime
  2. datetimeObj = datetime.datetime.strptime('2002-01-02T10::52::59.456777'
  3. ,'%Y-%m-%dT%H::%M::%S.%f')
  4. print('changed timestamp string to datetime object', datetimeObj)
  5. print('verifying the type of changed format: ', type(datetimeObj))

输出

 
  1. changed timestamp string to datetime object 2002-01-02 10:52:59.456777
  2. verifying the type of changed format: <class 'datetime.datetime'>
'
运行

示例说明

  • 在上面的代码中,我们导入了 python datetime 库。
  • 然后,我们保存了时间戳和日期时间的格式(在strftime中进行了解释) 对象添加到变量中。
  • 然后我们打印变量以及变量的类型。

如何获取当前时间戳?

时间戳是用于查找特定事件发生时间的字符序列,通常给出一天中的日期和时间,精确到几分之一秒。

让我们看看如何使用 datetime python 模块获取当前时间戳。

语法

 
  1. import datetime
  2. # Date entered by the user/ Current date
  3. var1 = datetime.now()
  4. var1ToTimestamp = var1.timestamp()

*

 
  1. import datetime
  2. timestamp = datetime.datetime.now()
  3. print('current date and time', timestamp)
  4. print('current timestamp', timestamp.timestamp())
'
运行

输出

 
  1. current date and time 2021-10-17 13:43:04.221229
  2. current timestamp 1634458384.221229

代码解释

  • 在上面的代码中,我们导入了 datetime python 库。
  • 然后,我们将 date 对象保存到变量中。
  • 然后我们使用 .timestamp() 将日期对象转换为时间戳。

如何知道给定日期的日期?

  • 获取当天的全名

法典

 
  1. import datetime
  2. timestamp = datetime.datetime.now()
  3. print('full name of the day of the date used: ', timestamp.strftime('%A'))
'
运行

输出

 
    full name of the day of the date used:  Sunday

代码解释

  • 在上面的代码中,我们导入了 datetime python 库。
  • 然后,我们将 date 对象保存到变量中。
  • 然后,我们在 strftime() 的帮助下打印当天的全名,其属性为 '%A',如 strftime() 中所述
  • 要获取日期的天数,我们可以对 date 对象使用 .strftime('%d')。

法典

 
  1. import datetime
  2. timestamp = datetime.datetime.now()
  3. print('day count of the day of the date used: ', timestamp.strftime('%d'))
'
运行

输出

 
     day count of the day of the date used:  17

代码解释

  • 在上面的代码中,我们导入了 datetime python 库。
  • 然后,我们将 date 对象保存到变量中。
  • 然后,我们在 strftime() 的帮助下打印当天的全名,其属性为 '%d',如 strftime() 中所述。

从给定日期生成日期列表

算法

主要功能

  • 导入 datetime python 模块。
  • 从用户处获取 StartDate 和 EndDate 的输入。
  • 运行从 StartDate 到 EndDate(included) 的 for 循环。
    • 当循环正在运行时
      • 打印 UserDefined 函数返回的日期
    • 当循环停止时
      • 从中走出来,您可以在输出屏幕上获得所有日期之间。

UserDefined 函数

  • 此函数采用 2 个属性:开始日期和结束日期
  • 运行从 StartDate 到 EndDate(included) 的 for 循环。
    • 当循环正在运行时
      • 将日期返回到 main 函数。
    • 当循环停止时
      • 从用户定义的函数中取出并返回到 main 函数。

流程图

下面提到的图像可帮助您更好地可视化我们如何打印两个日期之间的所有日期列表。

法典

 
  1. import datetime
  2. def datediff(date1, date2):
  3. for n in range(int ((date2 - date1).days)+1):
  4. yield date1 + datetime.timedelta(n)
  5. startdate = datetime.date(2021, 10, 1)
  6. enddate = datetime.date(2021, 10, 11)
  7. print('List of dates between ', startdate.strftime("%d-%m-%y"),
  8. ' and ', enddate.strftime("%d-%m-%y"), ' is/are: ')
  9. for date in datediff(startdate, enddate):
  10. print(date.strftime("%d-%m-%Y"))
'
运行

输出

 
  1. List of dates between 01-10-21 and 11-10-21 is/are:
  2. 01-10-2021
  3. 02-10-2021
  4. 03-10-2021
  5. 04-10-2021
  6. 05-10-2021
  7. 06-10-2021
  8. 07-10-2021
  9. 08-10-2021
  10. 09-10-2021
  11. 10-10-2021
  12. 11-10-2021

Python DateTime 模块的应用

  • 可用于在仓库管理软件中检查物品的剩余保质期。
  • 可用于通过知道他/她的出生日期来确定人的确切年龄(以年、月、日为单位)。
  • 可用于将时间转换为不同的时区。

结论

  • 在本文中,我们了解了 python datetime 模块的所有从基础到高级的类和函数。我们从介绍开始,在介绍中我们了解了 datetime python 模块的基础知识,并了解了如何在代码中导入 python datetime 模块。
  • 之后,我们研究了 datetime python 模块的所有类,并深入研究了该模块的每个类的功能。
  • 然后,我们进入本文最有趣的部分,即“我们如何格式化日期”。在这一部分中,我们看到了很多可用于格式化日期和时间的方法/符号。
  • 稍后,我们将学习如何查找当前日期和时间,如何从给定日期获取日期。
  • 最后,我们使用 python datetime 类和 control 语句生成两个日期之间的所有日期列表。
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/852253
推荐阅读
相关标签
  

闽ICP备14008679号