与其他编程语言不同,Python 不允许我们直接使用日期对象。要在 Python 中使用日期和时间对象,您必须导入一个 datetime 模块。
这个 datetime 模块包含用于处理日期或操作日期和时间的类,可以格式化它们,还包含 timedelta、strptime 和 strftime 类以及实际示例。
此 Python datetime 对象的语法包含 Year_Number、Month_Number、Day_Number、Hours、Minutes 和 Seconds 参数。
Python datetime 示例
让我向您展示此 datetime 模块中可用方法的列表。为此,您需要使用 dir 函数参数。
import datetime print(dir(datetime))
此模块中可用方法的列表。
['MAXYEAR', 'MINYEAR', '__all__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__spec__', 'date',
'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
datetime 类
此类具有年、月和日属性。在这里,第一个 print 语句提取并返回当前日期的年份。接下来的两个 print 语句返回月份和日期。请注意,我们将此类分配并使用了别名 gm。
import datetime as gm
today = gm.date.today()
print('Today\'s Date = ', today)
print('Year = ', today.year)
print('Month = ', today.month)
print('Day = ', today.day)
Today's Date = 2021-05-03
Year = 2021
Month = 5
Day = 3
MAXYEAR 返回模块支持的最大(最高)年份,即 9999。MINYEAR 返回允许的最小年份,即 1。
print('Maximum Year = ', gm.MAXYEAR)
print('Minimum Year = ', gm.MINYEAR)
Maximum Year = 9999
Minimum Year = 1
Python datetime 今天和现在
这个 Python 模块具有 now 函数,也具有 today 函数,它们都返回当前的日期和时间。
dt = gm.datetime.now()
print(dt)
print('Today\'s Dt = ', dt)
print()
dt = gm.date.today()
print('\nToday\'s Dt = ', dt)
2021-05-03 16:03:25.186286
Today's Dt = 2021-05-03 16:03:25.186286
Today's Dt = 2021-05-03
datetime 类属性
到目前为止,我们使用的是基本的导入选项,这就是为什么我们使用两次关键字和 method_name。但是,如果我们使用下面的导入技术,就可以消除额外的步骤。
此示例显示了 datetime 类中所有可用属性的列表。它们是 Year、Month、Day of Month、hour、minute、second、microsecond 和 weekday。我们还展示了用于从当前提取和返回日期和时间的可用函数。
from datetime import datetime as syd
dt = syd.now()
print('Date = ', dt)
print('Short Date = ', dt.date())
print('Year = ', dt.year)
print('Month = ', dt.month)
print('Day = ', dt.day)
print('Time = ', dt.time())
print('Hour = ', dt.hour)
print('Minute = ', dt.minute)
print('Second = ', dt.second)
print('Microsecond = ', dt.microsecond)
print('Weekday Number = ', dt.weekday())
Date = 2021-05-03 16:00:39.908339
Short Date = 2021-05-03
Year = 2021
Month = 5
Day = 3
Time = 16:00:39.908339
Hour = 16
Minute = 0
Second = 39
Microsecond = 908339
Weekday Number = 0
Python datetime 模块具有 time 类,用于处理或操作时间值。在这里,我们使用 time 类来写入当前日期和时间的时间。接下来,我们使用 print 语句通过可用的 hour、minute、second 和 microsecond 属性返回时间部分。
time = syd.time(syd.now())
print('Current Time = ', time)
print('Hour from Current Time = ', time.hour)
print('Minute from Current Time = ', time.minute)
print('Second from Current Time = ', time.second)
print('Microsecond from Current Time = ', time.microsecond)

datetime isoformat
这个 datetime 类具有 isoformat,它返回 ISO 8601 格式的日期字符串表示形式 YYYY-MM-DD
print(syd.now()) print(syd.now().isoformat())
2021-05-03 16:05:47.074065
2021-05-03T16:05:47.103824
使用 datetime 模块创建日期和时间
在这里,我们使用此函数创建自定义日期对象,该对象接受年、月、日、小时、分钟、秒和微秒。第一个语句创建一个自定义 dt,其中小时为零或没有时间。第四个创建 dt,第五个返回微秒。
dt1 = syd(2017, 12, 31) print(dt1) dt4 = syd(2014, 12, 31, 22, 33, 44) print(dt4) dt5 = syd(2016, 12, 31, 22, 33, 44, 123456) print(dt5)
2017-12-31 00:00:00
2014-12-31 22:33:44
2016-12-31 22:33:44.123456
datetime timestamp 函数
Python datetime timestamp 函数返回 POSIX 时间戳。utcfromtimestamp 方法从给定时间戳返回 UTC。在这里,我们同时使用这两个函数来返回当前时间戳和 UTC。
print("--- timestamp Result---")
dt = syd.now()
print(dt)
print(dt.timestamp())
print("\n---utcfromtimestamp Result---")
tm_stamp = syd.utcfromtimestamp(123456789)
print(tm_stamp)
tm_stamp2 = syd.utcfromtimestamp(482056789)
print(tm_stamp2)
tm_stamp3 = syd.utcfromtimestamp(19023456789)
print(tm_stamp3)
tm_stamp4 = syd.utcfromtimestamp(12761456789)
print(tm_stamp4)
--- timestamp Result---
2021-05-03 17:39:20.605253
1620043760.605253
---utcfromtimestamp Result---
1985-04-11 08:39:49
2572-10-29 21:33:09
2374-05-25 01:06:29
datetime replace
datetime replace 函数用新值替换日期和时间部分。此 replace 的语法是
repalce(year = self.year, month = self.month, day = self.day, hour = self.hour, minute = self.minute, second = self.second, microsecond = self.microsecond, tzinfo = self.tzinfo)
我们替换了小时、分钟、秒和微秒。
dt = syd.now() print(dt) dt_replace = dt.replace(hour = 2) print(dt_replace) dt_replace2 = dt.replace(minute = 59) print(dt_replace2) dt_replace3 = dt.replace(second = 4) print(dt_replace) dt_replace4 = dt.replace(microsecond = 7) print(dt_replace4)
2021-05-03 17:38:03.697423
2021-05-03 02:38:03.697423
2021-05-03 17:59:03.697423
2021-05-03 17:38:04.697423
2021-05-03 17:38:03.000007
以下是此类中所有其他可用属性和函数的列表。
dt = syd.now()
print('Replace = ', dt.replace(hour = 2))
print('Tzinfo = ', dt.tzinfo)
print('Tzname = ', dt.tzname())
print('Timetz = ', dt.timetz())
print('Timestamp = ', dt.timestamp())
print('Time = ', dt.ctime())
print('isoweekday = ', dt.isoweekday())
print('astimezone = ', dt.astimezone())
print('utcoffset = ', dt.utcoffset())
print('Daylight Saving = ', dt.dst())
Replace = 2021-05-03 02:37:16.992139
Tzinfo = None
Tzname = None
Timetz = 17:37:16.992139
Timestamp = 1620043636.992139
Time = Mon May 3 17:37:16 2021
isoweekday = 1
astimezone = 2021-05-03 17:37:16.992139+05:30
utcoffset = None
Daylight Saving = None
datetime combine
combine 函数通过组合给定的日期值和时间来返回一个新对象。此 combine 的语法是
combine(date, time, tzinfo = self.tzinfo)
首先,我们声明了一个自定义日期和一个自定义时间。接下来,我们使用 combine 函数组合这些对象并返回日期和时间。然后,我们通过可用的属性返回 dt 部分。
在此示例中,我们使用 time 函数,但未提供秒值。接下来,我们使用 combine 函数组合了 dt。
import datetime as syt
dt = syt.date(2018, 12, 31)
tm = syt.time(23, 59, 58)
tm2 = syt.time(23, 0)
combine_dt = syt.datetime.combine(dt, tm)
combine_dt2 = syt.datetime.combine(dt, tm2)
print('Date = ', dt)
print('Time = ', tm)
print('Time2 = ', tm2)
print('Date and Time = ', combine_dt)
print('Date and Time2 = ', combine_dt2)
print('Year = ', combine_dt.year)
print('Month = ', combine_dt.month)
print('Day = ', combine_dt.day)
print('Hour = ', combine_dt.hour)
print('Minute = ', combine_dt.minute)
print('Second = ', combine_dt.second)
print('Microsecond = ', combine_dt.microsecond)
Date = 2018-12-31
Time = 23:59:58
Time2 = 23:00:00
Date and Time = 2018-12-31 23:59:58
Date and Time2 = 2018-12-31 23:00:00
Year = 2018
Month = 12
Day = 31
Hour = 23
Minute = 59
Second = 58
Microsecond = 0
Python datetime date 类
此模块具有 date 类,可用于操作日期或工作。它有三个重要属性。
- min:它返回最早或最小的可表示日期。
- max:最新或最大的可表示日期。
- resolution:连续日期之间的最小可能差异。
date 类属性
在我们之前的所有示例中,我们都使用 now 或 today 处理当前的 dt。但是,您可以使用 date 函数创建自定义日期。在这里,我们正在使用它并以 iso 格式返回它。
from datetime import date dt = date(2018, 1, 31) print(dt) print(dt.isoformat())
2018-01-31
2018-01-31
我们使用 datetime today 方法返回当前日期,然后使用这三个属性。
此示例显示了可用的日期属性列表。在这里,year 属性返回当前本地日期的年份,month = 月份编号,day = 月份中的日期,weekday = 星期几。
dt = date.today()
print('Today\'s Date = ', dt)
print('Year = ', dt.year)
print('Month = ', dt.month)
print('Day = ', dt.day)
print('Weekday Number = ', dt.weekday())
print('\nMinimum = ', date.min)
print('Maximum = ', date.max)
print('Resolution = ', date.resolution)
Today's Date = 2021-05-03
Year = 2021
Month = 5
Day = 3
Weekday Number = 0
Minimum = 0001-01-01
Maximum = 9999-12-31
Resolution = 1 day, 0:00:00
它还有一个 date 函数,可以从年份、月份和月份日期创建自定义日期。fromtimestamp 函数接受 POSIX 时间戳值作为参数并从中返回日期。
dt = date(2018, 1, 31)
print(dt)
print("\n---fromtimestamp Result ---")
tm_stamp = date.fromtimestamp(123456789)
print(tm_stamp)
tm_stamp2 = date.fromtimestamp(412056789)
print(tm_stamp2)
tm_stamp3 = date.fromtimestamp(9123456789)
print(tm_stamp3)
tm_stamp4 = date.fromtimestamp(8761456789)
print(tm_stamp4)
2018-01-31
---fromtimestamp Result ---
1973-11-30
1983-01-22
2259-02-10
2247-08-22
time 类
Python datetime 对象具有 time 类,它帮助我们处理时间并进行操作。它具有以下 3 个重要属性。
- min:它返回最早或最小的可表示时间。
- max:最新或最大的可表示时间对象。
- resolution:时间之间的最小可能差异。
第一个语句使用 time 方法返回 00:00:00。在第二个语句中,我们使用该函数来构造或创建时间为 10 小时、22 分钟和 33 秒。接下来,我们使用这些重要属性。
from datetime import time
tt = time()
print(tt)
print()
tt2 = time(10, 22, 33)
print(tt2)
print('\nMinimum = ', time.min)
print('Maximum = ', time.max)
print('Resolution = ', time.resolution)
00:00:00
0:22:33
Minimum = 00:00:00
Maximum = 23:59:59.999999
Resolution = 0:00:00.000001
time 属性
此示例显示了可用的时间属性列表。在这里,hour 属性从给定的分钟、秒和微秒返回小时。
tt = time(10, 50, 33)
print('Time = ', tt)
print('Hours = ', tt.hour)
print('Minutes = ', tt.minute)
print('Seconds = ', tt.second)
print('Microseconds = ', tt.microsecond)
Time = 10:50:33
Hours = 10
Minutes = 50
Seconds = 33
Microseconds = 0
在 Python datetime 中创建时间
此 time 示例是以上示例的扩展。在这里,我们使用微秒和参数名称。
from datetime import datetime as syd, time
tme = syd.time(syd.now())
print('Current Time = ', tme)
tt = time()
print(tt)
tt1 = time(10, 22, 45)
print(tt1)
tt2 = time(11, 34, 49, 890765)
print(tt2)
tt3 = time(hour = 17, minute = 11, second = 33)
print(tt3)
tt4 = time(hour = 17, minute = 22, second = 55, microsecond = 223344)
print(tt4)
Current Time = 16:12:24.490551
00:00:00
10:22:45
11:34:49.890765
17:11:33
17:22:55.223344
Python datetime timedelta、strftime 和 strptime
timedelta 对象预测或返回过去和未来的日期。在此示例中,我们返回一年后的日期和时间以及两年前的日期和时间。请参阅 timedelta。
strftime 方法以指定格式格式化日期,并以字符串形式返回。在这里,%Y-%m-%d 意味着年-月-日 (2019-01-31)。请参阅 strftime。
strptime 将日期的字符串表示转换为常规日期和时间,将字符串转换为 dt。在这里,strptime(dt_str, ‘%d %B %Y’)意味着字符串日期以 Day Month_Name Year 格式传入。请参阅 strptime。
from datetime import datetime, timedelta
dt = datetime.now()
print('Dt = ', dt)
future_dt = dt + timedelta(days = 365)
print('Future = ', future_dt)
past_dt = dt - timedelta(days = 730)
print('Past = ', past_dt)
print("\n-----strftime Results----")
dt2 = dt.strftime('%Y-%m-%d')
print(dt2)
dt3 = dt.strftime('%Y/%m/%d %H:%M:%S %p')
print(dt3)
dt4 = dt.strftime('%B %d, %Y %I-%M-%S %p')
print(dt4)
print("\n-----strptime Results----")
dt_str = '31 December 2017'
dt_value = dt.strptime(dt_str, '%d %B %Y')
print(dt_value)
dt_str2 = '15/8/17 22:33:55'
dt_value2 = dt.strptime(dt_str2, '%d/%m/%y %H:%M:%S')
print(dt_value2)
Dt = 2021-05-03 16:10:47.540318
Future = 2022-05-03 16:10:47.540318
Past = 2019-05-04 16:10:47.540318
-----strftime Results----
2021-05-03
2021/05/03 16:10:47 PM
May 03, 2021 04-10-47 PM
-----strptime Results----
2017-12-31 00:00:00
2017-08-15 22:33:55