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