2013-08-07 2 views
1

Я пытаюсь напечатать дату и месяц как 2-значные числа.Две цифры даты в Python

timestamp = date.today() 
difference = timestamp - datetime.timedelta(localkeydays) 
localexpiry = '%s%s%s' % (difference.year, difference.month, difference.day) 
print localexpiry 

Это дает результат 201387. Это все равно, чтобы получить результат как 20130807. Это потому, что я сравниваю это с строкой аналогичного формата.

ответ

4

Использовать дату форматирования с date.strftime():

difference.strftime('%Y%m%d') 

Демо:

>>> from datetime import date 
>>> difference = date.today() 
>>> difference.strftime('%Y%m%d') 
'20130807' 

Вы можете сделать то же самое с отдельными целыми компонентами date объекта, но вы должны использовать правильную строку форматирования параметры; Для форматирования целых чисел до двух цифр с ведущими нулями, используйте %02d, например:

localexpiry = '%04d%02d%02d' % (difference.year, difference.month, difference.day) 

но с использованием date.strftime() является более эффективным.

1

Вы также можете использовать format (datetime, date есть __format__ метод):

>>> import datetime 
>>> dt = datetime.date.today() 
>>> '{:%Y%m%d}'.format(dt) 
'20130807' 
>>> format(dt, '%Y%m%d') 
'20130807' 
+0

Удивительно, что есть так много различных способов для достижения тех же целей в Python. Поистине ошеломляющий – rahuL

Смежные вопросы