如何在 Python 中格式化日期

介绍

Python 附带了各种可以开箱即用的有用对象。日期对象就是此类对象的示例。由于日期和时间的复杂性,日期类型很难从头开始操作。然而,Python 日期对象使得将日期转换为所需的字符串格式变得非常容易。

日期格式化是您作为程序员将面临的一项常见任务,并且如果您的应用程序公开了日期,则将日期正确地传达给最终用户是用户体验的重要组成部分。

世界各地的不同地区有不同的方式来表示日期/时间,因此作为程序员,您的目标是以用户可读的方式呈现日期值。

例如,您可能需要用数字表示日期值,例如“02-23-2023”。另一方面,您可能需要以较长的文本格式编写相同的日期值,例如“23 年 2023 月 XNUMX 日”。在另一种情况下,您可能希望从数字格式的日期值中提取字符串格式的月份。

在本文中,我们将研究不同类型的日期对象及其功能。

日期时间模块

Python的 datetime 模块包含可用于处理日期和时间值的方法。要使用该模块,我们首先通过 import 声明如下:

import datetime

我们可以使用以下方式表示时间值 time 班级。的属性为 time 类包括小时、分钟、秒和微秒。

请注意: 的论据 time 类是可选的。尽管如果您不指定任何参数,您将返回时间 0,这在大多数情况下不太可能是您所需要的。

例如,您可以使用以下命令初始化时间对象,其值为 1 小时、10 分钟、20 秒和 13 微秒:

t = datetime.time(1, 10, 20, 13)

要查看时间,让我们使用 print 功能:

print(t)

要提取字段,例如小时、分钟、秒或微秒 - 您可以分别访问每个字段:

print('hour:', t.hour)

上述时间的分、秒、微秒可以通过如下方式检索:

print('Minutes:', t.minute) 
print('Seconds:', t.second) 
print('Microsecond:', t.microsecond) 

日历日期的值可以通过以下方式表示 date 班级。这些实例将具有年、月和日的属性。

让我们调用 today() 查看今天日期的方法:

import datetime

today = datetime.date.today()
print(today) 

该代码将返回今天的日期,因此您看到的输出将取决于您运行上述脚本的日期。

现在我们调用 ctime 以另一种格式打印日期的方法:

print('ctime:', today.ctime())

ctime 方法使用比我们之前看到的示例更长的日期时间格式。该方法主要用于将 Unix 时间(自 1 年 1970 月 XNUMX 日以来的秒数)转换为字符串格式。

这是我们如何使用 date 类:

print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)

结果是:

Year: 2022
Month: 9
Day : 15

将日期转换为字符串 时间()

现在您已经知道如何创建日期和时间对象,让我们学习如何将它们格式化为更易读的字符串。

为了实现这一目标,我们将使用 strftime() 方法。该方法帮助我们将日期对象转换为可读的字符串。它需要两个参数,如以下语法所示:

time.strftime(format, t)

第一个参数是格式字符串,第二个参数是要格式化的时间,可选。

此方法也可用于 datetime 直接对象,如下例所示:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))

查看我们的 Git 学习实践指南,其中包含最佳实践、行业认可的标准以及随附的备忘单。 停止谷歌搜索 Git 命令,实际上 学习 它!

我们使用以下字符串来格式化日期:

  • %b:返回月份名称的前三个字符。在我们的示例中,它返回“Sep”。
  • %d:返回一个月中的第几天,从 1 到 31。在我们的示例中,它返回“15”。
  • %Y:以四位数格式返回年份。在我们的示例中,它返回“2022”。
  • %H: 返回小时。在我们的示例中,它返回“00”。
  • %M:返回分钟,从 00 到 59。在我们的示例中,它返回“00”。
  • %S:返回第二个,从 00 到 59。在我们的示例中,它返回“00”。

我们没有经过时间,因此时间的值都是“00”。以下示例显示了如何格式化时间:

import datetime

x = datetime.datetime(2022, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))

完整的字符代码列表

除了上面给出的字符串之外, strftime 方法采用其他几个指令来格式化日期值:

  • %a:返回工作日的前三个字符,例如周三。
  • %A:返回工作日的全名,例如 Wednesday。
  • %B:返回月份的全名,例如September。
  • %w:以数字形式返回工作日,从 0 到 6,其中星期日为 0。
  • %m:以数字形式返回月份,从 01 到 12。
  • %p:返回时间 AM/PM。
  • %y:以两位数格式返回年份,即不带世纪。例如,“18”而不是“2018”。
  • %f:返回从 000000 到 999999 的微秒。
  • %Z:返回时区。
  • %z:返回 UTC 偏移量。
  • %j:返回一年中的第几天,从 001 到 366。
  • %W:返回一年中的周数,从 00 到 53,其中星期一算为一周的第一天。
  • %U:返回一年中的周数,从 00 到 53,星期日算为每周的第一天。
  • %c:返回本地日期和时间版本。
  • %x:返回日期的本地版本。
  • %X:返回本地时间版本。

考虑以下示例:

import datetime

x = datetime.datetime(2022, 9, 15)
print(x.strftime('%b/%d/%Y'))

以下是仅获取月份的方法:

print(x.strftime('%B'))

让我们显示年份:

print(x.strftime('%Y'))

在此示例中,我们使用了格式代码 %Y。请注意, Y 是大写的。现在把它写成小写:

print(x.strftime('%y'))

正如您所看到的,使用这些格式化代码,您可以以您想要的任何形式表示日期时间。

使用 strptime 将字符串转换为日期

strftime() 方法帮助我们将日期对象转换为更可读的字符串。这 strptime() 方法则相反,即它接受字符串并将它们转换为Python可以理解的日期对象。

当您收到字符串格式的日期并希望将其转换为不同的字符串格式的日期时,这非常有用。通过转换为中间日期时间对象,您可以访问可重新格式化为任何其他格式的已解析结构。

以下是该方法的语法:

datetime.strptime(string, format)

string 参数是我们要转换为日期格式的字符串格式的值。这 format 参数是指定转换后日期采用的格式的指令。

例如,假设我们需要将字符串“9/15/22”转换为 datetime 目的。

我们首先导入 datetime 模块:

from datetime import datetime

然后我们可以以字符串的形式定义日期:

str = '9/15/22'

在我们将上面的字符串转换为实际的日期时间之前,Python 无法将其理解为日期时间 datetime 目的。我们可以通过调用成功地做到这一点 strptime 方法。

执行以下命令来转换字符串:

date_object = datetime.strptime(str, '%m/%d/%y')

现在让我们调用 print 显示字符串的函数 datetime 格式:

print(date_object)

可以看到,转换成功了!

您现在可以将此日期对象转换为任何其他字符串格式。

处理不同的分隔符就像在格式字符串中使用它们一样简单:

from datetime import datetime

str = '9-15-22'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)

结论

在本文中,我们研究了如何在 Python 中格式化日期。我们看到了如何 datetime Python 中的模块可用于操作日期和时间值。该模块包含许多可用于此目的的类。例如, time 类用于表示时间值,而 date 类用于表示日历日期值。

时间戳记:

更多来自 堆栈滥用