如何全局更改 Python 中的默认日期格式

How to globally change the default date format in Python

我正在编写一个 Python 脚本,当我想根据特定格式显示日期时,我目前在其中使用 strftime。然而,我使用的格式在整个脚本中始终是相同的,因此感觉浪费时间并且违反了必须在每个 print.[=16= 中显式调用 strftime(myFormat) 的 DRY 原则。 ]

我正在寻找一种方法来仅定义一次脚本中使用的日期字符串格式,对于 所有 个字符串。

我试过这个:

from datetime import datetime

def format_string(self):
    return "%02d-%02d-%02d" % (self._day, self._month, self._year)
datetime.date.__str__ = format_string

这不起作用,因为 __str__ 是只读的。

假设 __str__ 不是只读的,当在所有模块中导入日期时间时,您的解决方案将如何工作?您必须在每个模块的开头定义 __str__

要解决这个问题,您可能会创建一个基本模块,比如“mydatetime.py”,在该模块中定义 __str__,然后在您所在的所有模块中执行 from mydatetime import datetime我会打印

所以如果我们要拥有自己的基础模块,为什么不自己创建 class

mydatetime.py

from datetime import datetime as system_datetime, date as system_date


class date(system_date):
     def __str__(self):. # similarly for __repr__
           return "%02d-%02d-%02d" % (self._day, self._month, self._year)

class datetime(system_datetime):
     def __str__(self):. # similarly for __repr__
           return "%02d-%02d-%02d" % (self._day, self._month, self._year)

     def date(self):
           return date(self.year, self.month, self.day)

然后你可以用 from mydatetime import datetime

替换所有 from datetime import datetime

您可以定义一个方法 pretty_format_date() 在您的代码库中导入,并且该方法将包含要重复使用的 strftime(myFormat)