Python 从Matplotlib DateFormatter中的时间中删除前导零

Python 从Matplotlib DateFormatter中的时间中删除前导零,python,matplotlib,Python,Matplotlib,如果我使用Matplotlib日期格式化程序,如下所示: mydateformatter = DateFormatter("%b %d %I:%M %p", self._tz) 我会得到这样的日期(注意时间部分有一个前导零): 2011年11月27日 下午3:00 相反,我希望在时间上失去领先的零(这样更人性化),比如: 2011年11月27日 下午3:00 有没有办法做到这一点?注意:请参阅编辑历史记录以了解下面评论中的讨论。这篇文章已被改写以反映它们。 不能使用python文档中列出的标准

如果我使用Matplotlib日期格式化程序,如下所示:

mydateformatter = DateFormatter("%b %d %I:%M %p", self._tz)
我会得到这样的日期(注意时间部分有一个前导零):

2011年11月27日 下午3:00

相反,我希望在时间上失去领先的零(这样更人性化),比如:

2011年11月27日 下午3:00


有没有办法做到这一点?

注意:请参阅编辑历史记录以了解下面评论中的讨论。这篇文章已被改写以反映它们。

不能使用python文档中列出的标准日期转换说明符(与C标准化的日期转换说明符相同)。但是,可能有一些依赖于平台的方法来实现这种格式。这样的代码可能会派上用场:

# Set the default spec to use -- uglier is better than broken.
hour_fmt = '%I'

# If we're running on a platform that has an hour spec w/o leading zero
# then use that one instead.
if sys.platform.startswith('linux'):
    hour_fmt = '%l'
elif sys.platform.startswith('win'):
    hour_fmt = '%#I'
# etc

mydateformatter = DateFormatter("%b %d " + hour_fmt + ":%M %p", self._tz)

我已确认
%l
在Linux上工作,OP已确认“%”我`在Windows上工作。

您从哪里获得%l?在strftime页面上,我看到()没有这样的指令。无论如何,这不起作用;相反,我得到的时间根本没有任何时间,比如:“2012年11月24日22:35 PM”非常有趣——事实上,我做了一些欺骗,使用了C
strftime()
函数的手册页,该函数的格式与python中的
time.strftime()
差不多。我应该指出的是,尽管python文档也没有提到它(!),但使用
time.strftime()。我是uinsg Python 2.7.2。
matplotlib
文档似乎表明它将使用
strftime
。。。根据文档:“某些平台上可能支持其他指令,但只有此处列出的指令具有ANSI C标准化的含义。”换句话说,您平台的
strftime()
可能不支持
%l
。将更新答案以反映这一点。感谢您的额外作业!嗯,因为我需要在Windows上使用它,所以我必须找到一种不同的方法。根据MSDN,他们的
strftime()
为此接受
%#I
。不确定它是否有效,但试试也无妨。