Python代码 在线执行

Python strftime()

/datetime/strftime

在本文中,您将学习如何将日期,时间和日期时间对象转换为其等效的字符串(借助示例)

strftime()方法使用日期时间datetime 对象返回表示日期和时间的字符串。


示例 1:使用strftime()将日期时间转换为字符串

下面的程序将包含当前日期和时间的datetime对象转换为不同的字符串格式。

 from datetime import datetime

now = datetime.now() # current date and time

year = now.strftime("%Y")
print("year:", year)

month = now.strftime("%m")
print("month:", month)

day = now.strftime("%d")
print("day:", day)

time = now.strftime("%H:%M:%S")
print("time:", time)

date_time = now.strftime("%m/%d/%Y, %H:%M:%S")
print("date and time:",date_time) 

运行程序时,输出将如下所示:

 year: 2018
month: 12
day: 24
time: 04:59:31
date and time: 12/24/2018, 04:59:31 

这里,yeardaytimedate_time是字符串,而nowdatetime对象。


strftime()如何工作?

在上述程序中,%Y%m%d等是格式代码。strftime()方法采用一个或多个格式代码作为参数,并基于该代码返回格式化的字符串。

  1. 我们从datetime模块导入了datetime类。 这是因为datetime类的对象可以访问strftime()方法。

    Import datetime module in Python

  2. 包含当前日期和时间的datetime对象存储在now变量中。

    datetime object containing current date and time

  3. strftime()方法可用于创建格式化的字符串。

    Python strftime() example

  4. 您传递给strftime()方法的字符串可能包含多个格式代码。

    Python strftime() example


示例 2:根据时间戳创建字符串

 from datetime import datetime

timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)

print("Date time object:", date_time)

d = date_time.strftime("%m/%d/%Y, %H:%M:%S")
print("Output 2:", d)	

d = date_time.strftime("%d %b, %Y")
print("Output 3:", d)

d = date_time.strftime("%d %B, %Y")
print("Output 4:", d)

d = date_time.strftime("%I%p")
print("Output 5:", d) 

运行该程序时,输出:

Date time object: 2018-06-12 09:55:22
Output 2: 06/12/2018, 09:55:22
Output 3: 12 Jun, 2018
Output 4: 12 June, 2018
Output 5: 09AM 

格式代码列表

下表显示了您可以传递给strftime()方法的所有代码。

指令含义示例
%a缩写的工作日名称。Sun, Mon, ...
%A完整的工作日名称。Sunday, Monday, ...
%w工作日,表示为十进制数字。0, 1, ..., 6
%d月份中的一天,表示为以零填充的十进制数。01, 02, ..., 31
%-d月份中的一天,表示为无填充的十进制数字。1, 2, ..., 30
%b缩写的月份名称。Jan, Feb, ..., Dec
%B完整的月份名称。January, February, ...
%m月份,表示为以零填充的十进制数字。01, 02, ..., 12
%-m月份,表示为无填充的十进制数。1, 2, ..., 12
%y没有世纪的年份,表示为以零填充的十进制数字。00, 01, ..., 99
%-y没有世纪的年份,表示为无填充的十进制数字。0, 1, ..., 99
%Y带世纪的年份,表示为十进制数字。2013, 2019, ...
%H小时(24 小时制),表示为以零填充的十进制数字。00, 01, ..., 23
%-H小时(24 小时制),表示为无填充的十进制数字。0, 1, ..., 23
%I小时(12 小时制),表示为以零填充的十进制数字。01, 02, ..., 12
%-I小时(12 小时制),表示为无填充的十进制数字。1, 2, ... 12
%p语言环境的上午或下午。AM, PM
%M分钟,表示为以零填充的十进制数字。00, 01, ..., 59
%-M分钟,表示为无填充的十进制数字。0, 1, ..., 59
%S秒钟,表示为以零填充的十进制数字。00, 01, ..., 59
%-S秒钟,表示为无填充的十进制数字。0, 1, ..., 59
%f微秒,表示为以零填充的十进制数。000000 - 999999
%zUTC 偏移量,格式为+HHMM-HHMM 
%Z时区名称。 
%j一年中的一天,表示为以零填充的十进制数字。001, 002, ..., 366
%-j一年中的一天,表示为无填充的十进制数字。1, 2, ..., 366
%U一年中的星期(星期日为一周的第一天)。 新年中第一个星期日之前的所有天都视为第 0 周。00, 01, ..., 53
%W一年中的星期(星期一为一周的第一天)。 新年中第一个星期一之前的所有天都视为第 0 周。00, 01, ..., 53
%c适合语言环境的日期和时间表示。Mon Sep 30 07:06:05 2013
%x适合语言环境的日期表示形式。09/30/13
%X适合语言环境的时间表示形式。07:06:05
%%字面值%字符。%

示例 3:语言环境的适当日期和时间

 from datetime import datetime

timestamp = 1528797322
date_time = datetime.fromtimestamp(timestamp)

d = date_time.strftime("%c")
print("Output 1:", d)	

d = date_time.strftime("%x")
print("Output 2:", d)

d = date_time.strftime("%X")
print("Output 3:", d) 

当你运行程序时,输出将是:

 Output 1: Tue Jun 12 09:55:22 2018
Output 2: 06/12/18
Output 3: 09:55:22 

格式代码%c%x%X用于语言环境的适当日期和时间表示。


我们还建议您检查 Python strptime()strptime()方法从字符串创建datetime对象。