如何全局更改 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)
。
我正在编写一个 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)
。