我需要编写一个非常简单的 python 函数,它接受 Excel 格式的日期(自 1900 年 1 月 1 日起经过的整数天数)。我将其转换为 python datetime.date 对象,最后我想将其格式化为缩短的字符串日期(例如“Jan10”或“Mar11”)——基本上是 MmmYY 格式的日期。
dt.strftime( fmt )
这个功能在英国和美国的工作站上工作得很好,但是我注意到在一些设置为法语语言环境的同事 PC 上我们得到了错误的答案:
>>> locale.getdefaultlocale()
('fr_FR', 'cp1252')
在这些机器上,上面的函数返回格式化的法语日期字符串,这不是所需的输出。
我知道我可以使用 locale.setlocale 函数来全局重新定义语言环境,但这不是我们想要的。系统中的其他地方可能存在需要本地语言环境的脚本。我不希望通过重新定义全局语言环境来破坏其他人的组件。
那我该怎么办呢?除了重写字符串格式化函数之外,有没有一种方法可以使 strftime 函数在英国/美国语言环境中生成它的输出而不影响其他任何内容?
平台 = Windows 32 位上的 Python2.4.4
仅供引用,此解决方案不适用 - 它会全局更改语言环境,这正是我想避免做的事情: Locale date formatting in Python
最佳答案
如果您需要固定字符串,那么最好创建一个月份编号到月份名称的映射并直接使用它。
months = {1: 'Jan', 2: 'Feb', ...}
printf '%s%02d' % (months[somedt.month], somedt.year % 100)
关于python - 在一个函数中强制将一个函数的语言环境设置为英国/英语,以便 datetime.strftime 始终返回英语格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186023/