回答
您可以使用left strip删除前导零的
day = day.lstrip('0')
>>> day = '01'
>>> day.lstrip('0')
'1'
一些平台可以支持%
和字母(如“D”为月日),根据http://docs.python.org/library/time.html之间的宽度和精度规范 - 但它绝对是一种非便携式解决方案(例如,不适用于我的Mac ;-)。也许你可以在strftime
之后使用一个字符串替换(或RE,用于非常讨厌的格式)以解决这个问题?例如: -
>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'
因为Python真的只是调用C语言平台上strftime(3)
功能,它可能是有格式的字符,你可以用它来控制前导零;试试man strftime
并看看。但是,当然,结果将不可移植,因为Python手册会提醒您。 :-)
我会尝试用一种新的风格datetime
对象,而不是,它有一个像t.year
和t.month
和t.day
属性,并把那些通过%
运营商的正常的,高功率的格式,它不支持的控制前导零。详情请参阅http://docs.python.org/library/datetime.html。更好的是,如果你的Python拥有它并且更加现代,那么使用"".format()
运算符;它也有很多数字格式选项。请参阅:http://docs.python.org/library/string.html#string-formatting。
Here是GNU C库中strftime()
支持的修饰符的文档。 (喜欢的人面前说,它可能无法移植。)您感兴趣的可能是:
%e
代替%d
将取代一个月的天前导零用空格
它适用于我的Python(在Linux上)。我不知道它是否会对你的工作。
%w在Python 2.6上对我来说失败了。我猜这是* nix特定的。太糟糕了:( – rocketmonkeys 2010-11-30 14:27:46
这是至少在* nix系统上最干净,最一般的解决方案---这适用于OS X. – BFTM 2013-09-10 05:20:24
就像'%-d` [above](http:// stackoverflow。 com/a/2073189/1447415),它适用于Python 2.7.2的OS X 10.8.5,但不适用于Windows 7 Pro,Python 2.7.3的64位。 – Johan 2013-11-08 10:59:52
我发现Django模板日期格式过滤器快速简单。它去掉了前导零。如果你不介意导入Django模块,请检查它。
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')
注意,如果你像我一样,不要在django中构建你的应用程序,你需要告诉django你不需要配置它:`import django.conf`` django.conf.settings.configure()` – 2012-01-29 01:21:00
其实我有同样的问题,我意识到,如果添加%
和字母之间的连字符,你可以删除前导零。例如%Y/%-m/%-d
。
这只适用于Unix(Linux,OS X),而不是Windows(包括Cygwin)。在Windows上,您可以使用#
,例如%Y/%#m/%#d
。
只适用于Python 2.x – SilentGhost 2010-01-15 16:42:34
对于%d
您可以使用int()
转换为整数,然后它会自动删除前导0并成为整数。然后您可以使用str()
转换回字符串。
>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'
在-
看看波纹管:
>>> from datetime import datetime
>>> datetime.now().strftime('%d-%b-%Y')
>>> '08-Oct-2011'
>>> datetime.now().strftime('%-d-%b-%Y')
>>> '8-Oct-2011'
>>> today = datetime.date.today()
>>> today.strftime('%d-%b-%Y')
>>> print(today)
我们可以做这样的事情与format
方法的出现,因为python2.6的:
>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'
虽然也许以后原始问题的范围,对于更有趣的格式,您可以执行以下操作:
>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'
而作为python3.6的,这可以表示为inline formatted string:
Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'
根据Alex的方法,这将同时为启动的串并后的空间情况下工作:
re.sub('^0|(?<=)0', '', "01 January 2000 08:00am")
我比.format或%-d更好,因为这是跨平台的,并且允许我继续使用strftime(以获得像“November”和“Monday”之类的东西)。
晚了很晚,但%-d
在我的工作结束。
datetime.now().strftime('%B %-d, %Y')
产生类似“2014年11月5日”
欢呼:)
在Windows上,添加一个 '#',如“%#M /%#d /%Y% #I:%M:%S%p”
老问题,但%L(小写的L)的strftime的工作对我来说:这可能不适合每一个人,不过,因为它未在Python文档I中列出发现
import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")
只需使用replace
这样的:
(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
将输出:
'2017/7/21'
- 1. 的strftime不显示当前日期
- 2. strftime在日期?
- 3. 的Python:日期时间,错误由strftime
- 4. 删除前导0对STR(日期)
- 5. 日期时间Strftime
- 6. Python的日期时间平日的strftime()与平日()
- 7. 检索不含前导零的当前日期
- 8. 的preg_match日期/带或不带前导0
- 9. 使用strftime解析日期
- 10. Strftime与德国日期
- 11. 本地化的日期的strftime
- 12. 儒略日()和strftime()两个日期
- 13. Python日期格式(0/0/0000样式)
- 14. 删除日期时间由strftime
- 15. 当前日期时间是错误的使用STRFTIME
- 16. MySQL的前导0的日期格式化
- 17. 显示基于当前日期日期范围,在Python
- 18. 在日期前添加0的错误
- 19. Python中'\ 0 \ 0'的含义?
- 20. 文本框日期呈现截断前导0部分 - ajaxToolkit CalendarExtender
- 21. 解析与一个月日期没有前导0
- 22. SSRS表达式删除前导0日期
- 23. 从python当前日期获取7天前的日期
- 24. strftime函数熊猫 - Python
- 25. strftime格式比较日期间隔
- 26. Strftime日期更改与php和Mysql
- 27. PHP:更改日期语言/ strftime/strtotime
- 28. 公元前日期在Python
- 29. 日期时间的strftime不输出正确的时间戳
- 30. strftime%Z在时间和日期时间上的行为不同
-1这是什么都与strftime的呢? – 2012-09-10 21:18:09
`lstrip` /`strip`(或`strip`)将不能用于这样的事情:`%y-%m-%d%I:%M%p` 可以使用'replace'('0' ,'')`或者正则表达式变体,但是这仍然不是解决方案,更多的是破解(imho) – Kasapo 2013-03-19 19:09:43
它可以适用于“日”,但不适用于“小时”,如果您使用lstrip('0')。对于午夜 - 函数将截断整个字符串''(因为它将两个零不只是第一个零),所以我相信int(日)或int(小时)是更好的选择。 – 2014-06-26 10:25:06