一、认识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()函数中,使用格式化字符串指定日期和时间的元素、大小写以及其他特定的属性,并将它们组合成适当的形式以生成所需的日期和时间字符串。