При использовании Python strftime
есть ли способ удалить первые 0 даты, если она до 10-го числа, т.е. так 01
есть 1
? Не можете найти %
вещь для этого?
Спасибо!
На самом деле у меня была та же проблема, и я понял, что, если вы добавите дефис между %
буквой и, вы можете удалить начальный ноль.
Например %Y/%-m/%-d
.
Это работает только в Unix (Linux, OS X), но не в Windows (включая Cygwin). В Windows вы бы использовали #
, например %Y/%#m/%#d
.
ValueError: '-' is a bad directive in format '%b %-d, %Y'
. OSX, Python 2.7.%#d
будет делать то же самое на WindowsМы можем сделать это с появлением
format
метода начиная с python2.6:Хотя, возможно, за рамками исходного вопроса, для более интересных форматов вы можете сделать что-то вроде:
Начиная с python3.6, это можно выразить в виде строки в формате inline :
источник
time.strftime('%A %B %d, %Y')
, которое дает (теперь, на английском языке)Tuesday October 07, 2014
.__format__
хук, который позволяет вам писать такие вещи.'{dt.hour}'
используются 24-часовые часы :(. Использование второго параметра все еще возвращает вас к использованию'{%#I}'
в Windows и'{%-I}'
Unix.Некоторые платформы могут поддерживать спецификацию ширины и точности между
%
буквой и буквой (например, «d» для дня месяца), согласно http://docs.python.org/library/time.html - но это определенно непереносимый решение (например, не работает на моем Mac ;-). Может быть, вы можете использовать замену строки (или RE, для действительно неприятного формата) после того,strftime
как исправить это? например:источник
Вот документация по модификаторам, поддерживаемым
strftime()
в библиотеке GNU C. (Как уже говорили ранее, он может быть не переносимым.) Вас могут заинтересовать:%e
вместо%d
будет заменять ведущий ноль в дне месяца на пробелЭто работает на моем Python (на Linux). Я не знаю, будет ли это работать на вашем.
источник
%-d
выше , это работает в OS X 10.8.5 с Python 2.7.2, но не в Windows 7 Pro 64-bit с Python 2.7.3.источник
.replace('X0','X').replace('X','')
? Просто сделай,.replace('X0', '')
и это будет хорошо.В Windows добавьте «#», как в «% # m /% # d /% Y% # I:% M:% S% p»
Для справки: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
источник
довольно поздно на вечеринку, но
%-d
работает на моем конце.datetime.now().strftime('%B %-d, %Y')
производит что-то вроде "5 ноября 2014"ура :)
источник
ValueError: Invalid format string
в моей системе Windows.Я считаю фильтр форматирования даты в шаблоне Django быстрым и простым. Он удаляет ведущие нули. Если вы не против импортировать модуль Django, проверьте его.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
источник
import django.conf
django.conf.settings.configure()
Посмотрите на
-
ниже:источник
просто используйте
replace
так:(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
это выведет:
источник
Поскольку
%d
вы можете преобразовать в целое число, используяint()
это, он автоматически удалит ведущий 0 и станет целым числом Затем вы можете преобразовать обратно в строку, используяstr()
.источник
например, использование «% -d» не переносимо даже между разными версиями одной и той же ОС. Лучшим решением было бы извлекать компоненты даты по отдельности и выбирать между операторами форматирования для конкретной даты и доступом к атрибутам даты для каждого компонента.
источник
Поскольку Python действительно просто вызывает
strftime(3)
функцию языка C на вашей платформе, возможно, существуют символы формата, которые вы можете использовать для управления лидирующим нулем; попробуйтеman strftime
посмотреть. Но, конечно, результат не будет переносимым, как вам напомнит руководство по Python. :-)Я хотел бы попробовать использовать новый стиль
datetime
объекта вместо этого, который имеет атрибуты , какt.year
иt.month
иt.day
, и положите их через нормальный, мощный форматирование%
оператора, который делает управление поддержки ведущих нулей. См. Http://docs.python.org/library/datetime.html для получения подробной информации. Еще лучше, используйте"".format()
оператор, если ваш Python имеет его, и будьте еще более современными; у этого есть много вариантов формата для чисел также. Смотрите: http://docs.python.org/library/string.html#string-formatting .источник
Основанный на методе Алекса, это будет работать как для случаев начала строки, так и для пробелов:
Мне нравится это лучше, чем .format или% -d, потому что это кроссплатформенный и позволяет мне продолжать использовать strftime (чтобы получить такие вещи, как «ноябрь» и «понедельник»).
источник
Старый вопрос, но% l (в нижнем регистре L) работал для меня в strftime: это может не работать для всех, хотя, поскольку это не указано в документации по Python, которую я нашел
источник
источник
ValueError: '_' is a bad directive in format '%a %b %_d %H:%M:%S %Y'
использование python 3.5