pythonctime格式化_[译]Python中如何格式化⽇期
介绍
Python 附带了各种有⽤的对象,可以直接使⽤。例如⽇期对象就是⼀个例⼦。由于⽇期和时间的复杂性,⽇期类型很难从头开始操作。所幸,Python ⽇期对象将⽇期转换成所需的字符串格式变得相当容易。
⽇期格式化是作为程序员的你最重要的任务之⼀。不同地区表⽰⽇期/时间的⽅法各不相同,因此你作为程序员的⼀⼤⽬标是以⽤户可读的⽅式显⽰⽇期值。
例如,你可能需要⽤数字格式表⽰⽇期值,如 “02-23-2018”。另⼀⽅⾯,你可能需要以更长的⽂本格式(如 “Feb 23,2018“)表⽰相同的⽇期。在另⼀种情况下,你可能希望从数字格式的⽇期值中提取出字符串格式的⽉份。
在本⽂中,我们将研究不同类型的⽇期对象及其功能。
datetime 模块
正如你猜到的, Python 的 datetime 模块包含可⽤于处理⽇期和时间值的⽅法。要使⽤这个模块,我们得先通过以下 import 语句将其导⼊:
import datetime
复制代码
我们可以使⽤ time 类表⽰时间值。时间类的属性包括⼩时、分钟、秒和微秒。
time 类的参数是可选的。尽管不指定任何参数,你将获得 0 的时间(对象),但这⼤多数时候不太可能是你需要的。
例如,要初始化值为 1 ⼩时、10 分种、20 秒、13 微秒的时间对象,我们可以运⾏以下命令:格式化命令format参数
t = datetime.time(1, 10, 20, 13)
复制代码
让我们使⽤ print 功能来查看时间:
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 = day()
print(today)
复制代码
输出:
2018-09-15
复制代码
代码将返回今天的⽇期,因此你看到的输出取决于你运⾏脚本的⽇期。
现在我们调⽤ ctime ⽅法以另⼀种格式打印⽇期:
print('ctime:', ime())
复制代码
输出:
ctime: Sat Sep 15 00:00:00 2018
复制代码
ctime ⽅法会使⽤⽐我们之前看到的⽰例更长的⽇期时间格式。此⽅法主要⽤于将 Unix 时间(从 1970 年 1 ⽉ 1 ⽇以来的秒数)转换为字符串格式。
以下是我们如何使⽤ date 类显⽰年份,⽉份和⽇期:
print('Year:', ar)
print('Month:', h)
print('Day :', today.day)
复制代码
输出
Year: 2018
Month: 9
Day : 15
复制代码
使⽤ strftime 将⽇期转换为字符串
既然你已经知道如何创建时间和⽇期对象,那么让我们学习如何将它们格式化为更易读的字符串。
为此,我们将使⽤ 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 = w()
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
复制代码
这次省略了年份中前两位数字。如你所见,使⽤这些格式化代码,你可以⽤你想要的任何⽅式表⽰⽇期时间。
使⽤ strptime 将字符串转换成⽇期
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)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。