回答
您可以使用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. 的Python:日期時間,錯誤由strftime
- 2. 日期時間Strftime
- 3. 刪除前導0對STR(日期)
- 4. Python的日期時間平日的strftime()與平日()
- 5. Strftime與德國日期
- 6. 刪除日期時間由strftime
- 7. MySQL的前導0的日期格式化
- 8. 在日期前添加0的錯誤
- 9. Python中'\ 0 \ 0'的含義?
- 10. strftime函數熊貓 - Python
- 11. 公元前日期在Python
- 12. strftime%Z在時間和日期時間上的行爲不同
- 13. ColdFusion日期前的日期
- 14. PHP:日期不是當前日期
- 15. 日期時間的strftime%S在Windows崩潰
- 16. 不應選擇當前日期之前的日期
- 17. 引導日期選擇器未禁用以前的日期
- 18. 從python的csv文件的當前日期時間減去日期時間
- 19. 引導日期選擇器禁用沒有當前日期的過去日期
- 20. Java,設置日期爲0/0/0
- 21. 不正確的日期格式+在Python中處理日期的指導
- 22. 作爲日期存儲在sqlite表中的日期('15:20:16',strftime('%H:%M:%S'))。
- 23. sencha touch - datepickerfield在當前日期之前不顯示日期
- 24. 蟒日期時間:strptime和strftime不轉換相同的數據正確地
- 25. 在Python中更改爲前一天日期
- 26. 添加前導零日期時間C#
- 27. SSRS從日期中刪除前導零
- 28. 在log4j中包含當前日期的日誌文件名
- 29. 循環中的前導/前綴0
- 30. 導入包含導入包的Sql Server中的日期值
-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