在哪里保存常见的strftime字符串,如("%d /%m /%Y")

时间:2017-01-18 09:33:44

标签: python global-variables strftime format-string

在我的应用程序中,我发现自己经常使用 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")

感谢您的帮助

3 个答案:

答案 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}}