python - 在一个函数中强制将一个函数的语言环境设置为英国/英语,以便 datetime.strftime 始终返回英语格式

标签 python windows internationalization

我需要编写一个非常简单的 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/

相关文章:

java - Java 的国际化

Java:使用 PDFBox 将国家字符写入 PDF

python - SPA (Ember) 身份验证与后端

python - 在 MySQL Workbench 5.2.34 的 Python 脚本中,grt.root.wb 没有 physicalModels

sql-server - Windows 桌面应用程序 : Access, SQLite、SQL Server 等的最佳零(接近零?)管理关系数据库是什么?

html - 如何在文件夹名称中添加尾随空格?

windows - 如何阻止 Windows 控制台光标闪烁

javascript - Intl.NumberFormat 在 Jest 单元测试中表现不正确?

python - 如何选择相关性高于 pandas 阈值的特征对?

javascript - 从 python shell 发送 javascript 命令