您的位置:

Python DateTime strftime函数使用指南

一、认识strftime函数

Python是一种优秀的编程语言,在开发过程中,你经常需要在代码中处理时间和日期。Python的datetime模块提供了处理日期、时间和时间段的类和方法,而strftime()方法可以将日期和时间转换为其字符串表示形式。strftime()是Python中日期和时间格式化的函数之一,以简单的方式提供了日期和时间的各种格式的表示。

首先,我们来了解一下strftime()函数。该函数接受一个日期/时间对象并将其转换为一个字符串。

>>> import datetime
>>> now = datetime.datetime.now()
>>> str_date = now.strftime("%Y-%m-%d %H:%M:%S")
>>> print(str_date)
2022-09-18 23:33:35

此处,我们获取当前时间并将其格式化为年-月-日 小时:分钟:秒的形式并转换为字符串。这是strftime()最常见的用途之一。

二、时间格式化字符串

在strftime()函数中使用格式化字符串,对于日期和时间的表示有很多不同的选项。以下是最常用的一些格式化字符串:

格式化字符串 说明
%Y 年份(四位数)
%m 月份(带前导零)
%d 日期(带前导零)
%H 小时(24小时制,带前导零)
%M 分钟(带前导零)
%S 秒数(带前导零)

在格式化字符串中,不仅仅只有上述的字符,下面的字符串也常常被使用如下:

格式化字符串 说明
%a 本地简化星期名称(比如'Mon')
%A 本地完整星期名称(比如'Monday')
%b 本地简化月份名称(比如'Jan')
%B 本地完整月份名称(比如'January')
%c 本地相应的日期和时间表示
%j 一年中的第几天(001 至 366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00 至 53)星期天为星期的开始
%w 星期(0代表周日,6代表周六)
%W 一年中的星期数(00 至 53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%z 当前时区偏移量的整数部分
%Z 当前时区的名称
%% 字符%

三、日期格式化

在datetime对象中,strftime()方法可以按照格式化字符串将日期和时间表示成新的字符串。 以下是日期格式化的一些例子:

>>> import datetime
>>> today = datetime.date.today()
>>> str_date = today.strftime("%b %d, %Y")
>>> print(str_date)
Sep 18, 2022

此处,我们获取当前日期并将其格式化为“月份(简写) 日, 年份”的形式。

四、24小时格式化

在strftime()函数中,我们也可以将时间格式化为24小时格式:

>>> import datetime
>>> now = datetime.datetime.now()
>>> str_time = now.strftime("%H:%M:%S")
>>> print(str_time)
23:33:35

在这个例子中,我们以24小时制显示当前时间。

五、日期加时间格式化

在strftime()函数中,我们可以将日期和时间组合起来表示成新的字符串。 以下是日期和时间格式化的一些例子:

>>> import datetime
>>> now = datetime.datetime.now()
>>> str_date = now.strftime("%Y-%m-%d %H:%M:%S")
>>> print(str_date)
2022-09-18 23:33:35

在这个例子中,我们将日期和时间格式化为“年-月-日 小时:分钟:秒”的形式。

六、格式化不同的语言和时区

strftime()函数可以格式化不同语言和不同时区的日期和时间,只需在函数中传递不同的locale和tzinfo参数即可。以下是格式化语言和时区的一些例子:

>>> import datetime
>>> from babel.dates import format_date, format_time
>>> from pytz import timezone
>>> now = datetime.datetime.now()
>>> east_tz = timezone('Asia/Shanghai')
>>> str_date = format_date(now, locale='zh_CN')
>>> str_time = format_time(now.astimezone(east_tz), format='short', locale='zh_CN')
>>> print(str_date)
2022年9月18日
>>> print(str_time)
下午11点33分

在这个例子中,我们使用了Babel和pytz模块,将当前日期和时间格式化为中文表示,并在东八区时区时间下进行字符串输出。

七、使用字符串拼接构建日期时间字符串

strftime()函数将日期和时间格式化为字符串是很有用的,但在某些情况下,我们需要手动构造日期和时间字符串。此时,可以使用字符串拼接和日期/时间对象的属性来实现。以下是示例代码:

>>> import datetime
>>> now = datetime.datetime.now()
>>> str_date = str(now.year) + '-' + str(now.month) + '-' + str(now.day)
>>> str_time = str(now.hour) + ':' + str(now.minute) + ':' + str(now.second)
>>> print(str_date)
2022-9-18
>>> print(str_time)
23:33:35

在这个例子中,我们手动将当前日期和时间拼接成字符串输出。

八、总结

strftime()是Python中一种灵活的日期和时间格式化函数,常常用于创建自定义的日期和时间字符串。在strftime()函数中,使用格式化字符串指定日期和时间的元素、大小写以及其他特定的属性,并将它们组合成适当的形式以生成所需的日期和时间字符串。