Как напечатать дату в обычном формате?

«Боишься так. Я бы сделал HTML-страницу с таблицей стилей, затем с помощью jQuery применил таблицу стилей к стилю attr каждого элемента. Что-то вроде этого:

var styleAttributes = ['color','font-size']; // all the attributes you've applied in your stylesheet
for (i in styleAttributes) {
    $('body *').css(styleAttributes[i],function () {
        $(this).css(styleAttributes[i]);
    });
}

Затем скопируйте DOM и используйте это в письме.

615
задан codeforester 3 June 2019 в 22:09
поделиться

6 ответов

ПОЧЕМУ: даты являются объектами

В Python, даты являются объектами. Поэтому при управлении ими Вы управляете объектами, не строками, не метками времени, ни чем-либо.

Любой объект в Python имеют ДВА строковых представления:

  • регулярное представление, которое используется "печатью", может быть, получают использование эти str() функция. Это - большую часть времени наиболее распространенный человекочитаемый формат и используется для упрощения дисплея. Так str(datetime.datetime(2008, 11, 22, 19, 53, 42)) дает Вам '2008-11-22 19:53:42'.

  • альтернативное представление, которое используется для представления объектной природы (как данные). Это может быть, получают использование эти repr() функция, и удобно знать, какие данные Ваше управление, в то время как Вы разрабатываете или отлаживаете. repr(datetime.datetime(2008, 11, 22, 19, 53, 42)) дает Вам 'datetime.datetime(2008, 11, 22, 19, 53, 42)'.

то, Что произошло, - то, что при печати даты с помощью "печати" она использовала str(), таким образом, Вы видели хорошую строку даты. Но когда Вы распечатали mylist, Вы распечатали список объектов, и Python пытался представить набор данных, с помощью [1 113].

, Как: что Вы хотите сделать с этим?

ну, когда Вы управляете датами, продолжают использовать объекты даты все долго путь. Они получили тысячу полезных методов, и большая часть API Python ожидают, что даты будут объектами.

, Когда Вы захотите отобразить их, просто используйте str(). В Python хорошая практика должна явно бросить все. Таким образом как раз в то самое время, когда пора распечатать, получить строковое представление Вашей даты с помощью [1 115].

Одна последняя вещь. Когда Вы пытались распечатать даты, Вы распечатали mylist. Если Вы хотите распечатать дату, необходимо распечатать объекты даты, не их контейнер (список).

, НАПРИМЕР, Вы хотите распечатать всю дату в списке:

for date in mylist :
    print str(date)

Примечание, что в том конкретном случае , можно даже опустить str(), потому что печать будет использовать его для Вас. Но это не должно становиться привычкой:-)

Практический случай, с помощью кода

import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print mylist[0] # print the date object, not the container ;-)
2008-11-22

# It's better to always use str() because :

print "This is a new day : ", mylist[0] # will work
>>> This is a new day : 2008-11-22

print "This is a new day : " + mylist[0] # will crash
>>> cannot concatenate 'str' and 'datetime.date' objects

print "This is a new day : " + str(mylist[0]) 
>>> This is a new day : 2008-11-22

Усовершенствованная дата, форматирующая

, Даты имеют представление по умолчанию, но можно хотеть распечатать их в определенном формате. В этом случае можно получить представление пользовательской строки с помощью strftime() метод.

strftime() ожидает строковый шаблон, объясняющий, как Вы хотите отформатировать свою дату.

, НАПРИМЕР:

print today.strftime('We are the %d, %b %Y')
>>> 'We are the 22, Nov 2008'

Вся буква после "%" представляют формат для чего-то:

  • %d день номер
  • %m, месяц номер
  • %b, сокращение месяца
  • %y, год, последний, две цифры
  • %Y год

и т.д.

, Взглянули на официальную документацию , или справочник McCutchen, Вы не можете знать их всех.

С тех пор PEP3101, каждому объекту мог использовать его собственный формат автоматически формат метода любой строки. В случае даты и времени формат является тем же, используемым в strftime. Таким образом, можно сделать то же как выше подобного это:

print "We are the {:%d, %b %Y}".format(today)
>>> 'We are the 22, Nov 2008'

преимущество этой формы состоит в том, что можно также преобразовать другие объекты одновременно.
С введением [1 129] литералы Отформатированной строки (начиная с Python 3.6, 2016-12-23) это может быть записано как [1 161]

import datetime
f"{datetime.datetime.now():%Y-%m-%d}"
>>> '2017-06-15'

Локализация

, Даты могут автоматически адаптироваться к местному языку и культуре, если Вы используете их правильный путь, но это немного сложно. Возможно, для другого вопроса на ТАК (Переполнении стека);-)

884
ответ дан 15 revs, 11 users 63% 3 June 2019 в 22:09
поделиться

Быстрый отказ от ответа - я изучаю Python всего около 2 недель, поэтому я ни в коем случае не эксперт; поэтому мое объяснение может быть не самым лучшим, и я могу использовать неправильную терминологию. Во всяком случае, здесь это идет.

Я заметил в вашем коде, что когда вы объявили свою переменную today = datetime.date.today(), вы решили назвать свою переменную именем встроенной функции.

Когда ваша следующая строка кода mylist.append(today) добавила ваш список, она добавила всю строку datetime.date.today(), которую вы ранее установили в качестве значения переменной today, а не просто добавив today() ,

Простое решение, хотя, возможно, не самое подходящее для работы программистами при работе с модулем datetime, это изменить имя вашей переменной.

Вот что я попробовал:

import datetime
mylist = []
present = datetime.date.today()
mylist.append(present)
print present

и он печатает yyyy-mm-dd.

0
ответ дан Kevin Guan 3 June 2019 в 22:09
поделиться

Можно ли хотеть добавить его как строку?

import datetime 
mylist = [] 
today = str(datetime.date.today())
mylist.append(today) 
print mylist
1
ответ дан HanClinto 3 June 2019 в 22:09
поделиться

Необходимо преобразовать объект времени даты в строку.

следующий код работал на меня:

import datetime
collection = []
dateTimeString = str(datetime.date.today())
collection.append(dateTimeString)
print collection

Сообщенный мне, если Вы должны еще помочь.

4
ответ дан Simon Johnson 3 June 2019 в 22:09
поделиться

Используйте date.strftime. Аргументы форматирования описаны в документации .

Этот - то, что Вы хотели:

some_date.strftime('%Y-%m-%d')

Этот принимает Локаль во внимание. (сделайте это)

some_date.strftime('%c')
71
ответ дан daviewales 3 June 2019 в 22:09
поделиться

Можно сделать:

mylist.append(str(today))
2
ответ дан Igal Serban 3 June 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: