- 原文地址:How to Format Dates in Python
- 原文做者:Nicholas Samuel
- 译文出自:掘金翻译计划
- 本文永久连接:github.com/xitu/gold-m…
- 译者:Raoul1996
- 校对者:rocheers
Python 附带了各类有用的对象,能够直接使用。例如日期对象就是一个例子。因为日期和时间的复杂性,日期类型很难从头开始操做。所幸,Python 日期对象将日期转换成所需的字符串格式变得至关容易。前端
日期格式化是做为程序员的你最重要的任务之一。不一样地区表示日期/时间的方法各不相同,所以你做为程序员的一大目标是以用户可读的方式显示日期值。python
例如,你可能须要用数字格式表示日期值,如 “02-23-2018”。另外一方面,你可能须要以更长的文本格式(如 “Feb 23,2018“)表示相同的日期。在另外一种状况下,你可能但愿从数字格式的日期值中提取出字符串格式的月份。android
在本文中,咱们将研究不一样类型的日期对象及其功能。ios
正如你猜到的, Python 的 datetime
模块包含可用于处理日期和时间值的方法。要使用这个模块,咱们得先经过如下 import
语句将其导入:git
import datetime
复制代码
咱们能够使用 time
类表示时间值。时间类的属性包括小时、分钟、秒和微秒。程序员
time
类的参数是可选的。尽管不指定任何参数,你将得到 0 的时间(对象),但这大多数时候不太多是你须要的。github
例如,要初始化值为 1 小时、10 分种、20 秒、13 微秒的时间对象,咱们能够运行如下命令:后端
t = datetime.time(1, 10, 20, 13)
复制代码
让咱们使用 print 功能来查看时间:bash
print(t)
复制代码
输出:函数
01:10:20.000013
复制代码
你可能只须要查看小时、分钟、秒或者微秒,您能够像下边这么作:
print('hour:', t.hour)
复制代码
输出:
hour: 1
复制代码
能够按照以下方式检索上述时间(对象)的分钟、秒或者微秒:
print('Minutes:', t.minute)
print('Seconds:', t.second)
print('Microsecond:', t.microsecond)
复制代码
输出:
Minutes: 10
Seconds: 20
Microseconds: 13
复制代码
日历日期指能够经过 date
类表示。示例具备的属性有年、月和日。
让咱们来调用 today
方法来查看今天的日期:
import datetime
today = datetime.date.today()
print(today)
复制代码
输出:
2018-09-15
复制代码
代码将返回今天的日期,所以你看到的输出取决于你运行脚本的日期。
如今咱们调用 ctime
方法以另外一种格式打印日期:
print('ctime:', today.ctime())
复制代码
输出:
ctime: Sat Sep 15 00:00:00 2018
复制代码
ctime
方法会使用比咱们以前看到的示例更长的日期时间格式。此方法主要用于将 Unix 时间(从 1970 年 1 月 1 日以来的秒数)转换为字符串格式。
如下是咱们如何使用 date
类显示年份,月份和日期:
print('Year:', today.year)
print('Month:', today.month)
print('Day :', today.day)
复制代码
输出
Year: 2018
Month: 9
Day : 15
复制代码
既然你已经知道如何建立时间和日期对象,那么让咱们学习如何将它们格式化为更易读的字符串。
为此,咱们将使用 strftime
方法。这个方法能够帮助咱们将日期对象转换为可读字符串。它须要两个参数,语法以下所示:
time.strftime(format, t)
复制代码
第一个参数是格式字符串(以何种格式显示时间日期,感谢 rocheers 提醒),第二个参数是格式化的时间,可选值。
这个方法也能够在 datetime
对象上直接调用。如如下示例所示:
import datetime
x = datetime.datetime(2018, 9, 15)
print(x.strftime("%b %d %Y %H:%M:%S"))
复制代码
输出:
Sep 15 2018 00:00:00
复制代码
咱们使用如下字符串来格式化日期:
%b
: 返回月份名称的前三个字符。在咱们的例子中,它返回 ”Sep“%d
: 返回本月的日期,从 1 到 31。在咱们的例子中, 它返回 "15"。%Y
: 返回四位数格式的年份。在咱们的例子中, 它返回 "2018"。%H
: 返回小时。在咱们的例子中, 它返回 "00"。%M
: 返回分钟,从 00 到 59。在咱们的例子中, 它返回 "00"。%S
: 返回秒,从 00 到 59。在咱们的例子中, 它返回 "00"。咱们没有时间(对象),所以时间值都是 ”00“。下面的例子显示了如何格式化时间:
import datetime
x = datetime.datetime(2018, 9, 15, 12, 45, 35)
print(x.strftime("%b %d %Y %H:%M:%S"))
复制代码
输出:
Sep 15 2018 12:45:35
复制代码
除了上面给出的字符串外,strftime
方法还使用了其余几个指令来格式化日期值:
%a
: 返回工做日的前三个字符,例如 Wed。%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
: 返回本地时间版本。译者备注:原文中的是 weekday,在查了一些资料后翻译成 “工做日”,可是考虑如下示例:
from datetime import datetime
x = datetime.now()
x.strftime("%A")
复制代码
输出:
'Sunday'
复制代码
请考虑如下示例:
import datetime
x = datetime.datetime(2018, 9, 15)
print(x.strftime('%b/%d/%Y'))
复制代码
输出:
Sep/15/2018
复制代码
如下是你只获取月份的方法:
print(x.strftime('%B'))
复制代码
输出:
September
复制代码
让咱们只展现年份:
print(x.strftime('%Y'))
复制代码
输出:
2018
复制代码
在这个例子中,咱们使用了格式化代码 %Y
。请注意,它的 Y 是大写的,如今使用小写写:
print(x.strftime('%y'))
复制代码
输出:
18
复制代码
此次省略了年份中前两位数字。如你所见,使用这些格式化代码,你能够用你想要的任何方式表示日期时间。
strftime
方法帮助咱们将日期对象转换为可读的字符串,strptime
偏偏相反。它做用于字符串,并将它们转换成 Python 能够理解的日期对象。
这是这个方法的语法:
datetime.strptime(string, format)
复制代码
string
参数是咱们转换成日期格式的字符串值。format
参数是指定转换后日期采用的格式的指令。
例如,若是咱们须要将字符串 “9/15/18” 转换成 datetime
对象。
咱们先导入 datetime
模块,咱们将使用 from
关键字以便可以在没有点格式的状况下引用模块中特定的函数:
from datetime import datetime
复制代码
而后咱们能够用字符串形式定义日期:
str = '9/15/18'
复制代码
在将字符串转换为实际的 datetime
对象以前, Python 没法将上述字符串理解为日期时间。咱们能够经过调用 strptime
方法成功完成:
执行如下命令转换字符串:
date_object = datetime.strptime(str, '%m/%d/%y')
复制代码
如今让咱们调用 print
函数用 datetime
格式显示字符串:
print(date_object)
复制代码
输出:
2018-09-15 00:00:00
复制代码
如你所见,转换成功!
你能够看到正斜杠 “/” 用于分隔字符串的各个元素。这告诉 strptime
方法咱们的日期是什么格式,咱们的例子中是用 "/" 做为分隔符。
可是,若是月/日/年被 “-” 分隔怎么办?你应该这么处理:
from datetime import datetime
str = '9-15-18'
date_object = datetime.strptime(str, '%m-%d-%y')
print(date_object)
复制代码
输出:
2018-09-15 00:00:00
复制代码
再一次,多亏了格式说明符,strptime
方法可以解析咱们的日期并将其转换为日期对象。
在本文中,咱们研究了如何在 Python 中格式化日期。咱们看到 Python 中的 datetime
模块如何操做日期和时间值。该模块包含了许多操做日期时间的类,好比,time
类用于表示时间值,而 date
类用来表示日历日期值。
若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。