我使用以下日期格式:的Python的strftime%A固定長度
d.strftime("%A, %d %B %Y %H:%m")
並且由於平日的長度(%A
)的變化, 我想總是與 10個字符打印平日,在左側填充空格,並將其右對齊。
喜歡的東西
d.strftime("10%A, %d %B %Y %H:%m")
什麼是最簡單的方法是什麼?
我使用以下日期格式:的Python的strftime%A固定長度
d.strftime("%A, %d %B %Y %H:%m")
並且由於平日的長度(%A
)的變化, 我想總是與 10個字符打印平日,在左側填充空格,並將其右對齊。
喜歡的東西
d.strftime("10%A, %d %B %Y %H:%m")
什麼是最簡單的方法是什麼?
這個如何:
d.strftime("%A") + " " * (10 - len(d.strftime("%A")) + "," + d.strftime("%d %B %Y %H:%m")
傑克
str.rjust(10)
正是這麼做的:
s = d.strftime('%A').rjust(10) + d.strftime(', %d %B %Y %H:%M')
您在格式字符串作爲@Ahmad pointed out想%M (minutes), not %m (months)這是可能的。
在Python 3.6及更高版本,以獲得更簡潔的版本,一個可以濫用嵌套F-字符串:
>>> f"{f'{d:%A}':>10}, {d:%d %B %Y %H:%M}"
' Friday, 15 December 2017 21:31'
首選標準時間格式,如RFC 3339:
>>> from datetime import datetime
>>> datetime.utcnow().isoformat() + 'Z'
'2016-02-05T14:00:43.089828Z'
或rfc 2822:
>>> from email.utils import formatdate
>>> formatdate(usegmt=True)
'Fri, 05 Feb 2016 14:00:51 GMT'
inste廣告。
使用python 3.5.2,我必須使用%M(大寫M)。否則,分鐘總是10。 – Ahmad
這大致相當於jfs's answer,但你可以use .format()
,使其略短:
s = '{:>10}, {:%d %B %Y %H:%m}'.format(d.strftime('%A'), d)
,或者如果你把不僅僅是日期到字符串更多:
args = {
'weekday' = d.strftime('%A'),
'date' = d,
'foo' = some_other_stuff(),
'bar' = 17.5422,
}
s = '{weekday:>10}, {date:%d %B %Y %H:%m} {foo} {bar:>3.2f}'.format(**args)
這是一個工作方法。謝謝! – Spanky