在我的应用程序中,我发现自己经常使用 stftime ,并且主要使用2种字符串格式 - ("%d /%m /%Y")和(&#34 ;%H:%M&#34)
我不是每次都写字符串,而是想将这些字符串存储在某些全局变量中,所以我可以在我的应用中的一个地方定义格式字符串。
这样做的pythonic方法是什么?我应该使用全局字典,类,函数还是其他东西吗?
也许是这样的?
class TimeFormats():
def __init__(self):
self.date = "%d/%m/%Y"
self.time = "%H:%M"
或者喜欢这个?
def hourFormat(item):
return item.strftime("%H:%M")
感谢您的帮助
答案 0 :(得分:6)
您可以使用functools.partial
生成一个包含以下格式的函数:
import time,functools
time_dhm = functools.partial(time.strftime,"%d/%m/%Y")
time_hm = functools.partial(time.strftime,"%H:%M")
print(time_dhm(time.localtime()))
print(time_hm(time.localtime()))
结果:
18/01/2017
10:38
您只需将time
结构传递给新功能即可。该函数保持格式。
注意:您可以对lambda
执行相同操作:
time_dhm = lambda t : time.strftime("%d/%m/%Y",t)
答案 1 :(得分:3)
我认为最好创建一个自定义函数来实现这一目标。例如:
ArrayList<String>
示例运行:
def datetime_to_str(datetime_obj):
return datetime_obj.strftime("%d/%m/%Y")
对于开发人员来说,它会更友好,因为函数名称是自解释的。每次需要将>>> from datetime import datetime
>>> datetime_to_str(datetime(1990, 3, 12))
'12/03/1990'
转换为datetime
时,他们都会知道需要调用哪个函数。如果您想在整个应用程序中更改格式;会有单一的变化点。
答案 2 :(得分:1)
您可以创建自己的设置模块,例如django。
settings.py:
from settings import DATE_FORMAT
...
time.strftime( DATE_FORMAT, ...)
别处
import settings
...
time.strftime( settings.DATE_FORMAT, ...)
或
{{1}}