Как указать дату и время в питоне? - PullRequest
20 голосов
/ 05 октября 2009

Довольно простой вопрос новичка:

Какой объект используется в Python для указания даты (и времени) в Python?

Например, чтобы создать объект, который содержит данную дату и время (скажем, '05/10/09 18:00').

EDIT

В соответствии с запросом S.Lott, у меня пока что есть:

class Some:
    date = 

Я останавливаюсь там, после знака "=", потому что понимаю, что не знал, что это за объект;)

Ответы [ 4 ]

60 голосов
/ 05 октября 2009

Простой пример:

>>> import datetime
# 05/10/09 18:00
>>> d = datetime.datetime(2009, 10, 5, 18, 00)
>>> print d.year, d.month, d.day, d.hour, d.second
2009 10 5 18 0
>>> print d.isoformat(' ')
2009-10-05 18:00:00
>>> 
7 голосов
/ 06 октября 2009

У Ника D есть официальный способ решения вашей проблемы. Если вы хотите передать строку, как вы делали в своем вопросе, модуль dateutil (http://labix.org/python-dateutil) отлично поддерживает подобные вещи.

Например, я собираюсь скопировать и вставить другой ответ, который я дал недавно:

Простой пример:

>>> parse("Thu Sep 25 2003")
datetime.datetime(2003, 9, 25, 0, 0)

>>> parse("Sep 25 2003")
datetime.datetime(2003, 9, 25, 0, 0)

>>> parse("Sep 2003", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)

>>> parse("Sep", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)

>>> parse("2003", default=DEFAULT)
datetime.datetime(2003, 9, 25, 0, 0)

Для неоднозначных:

>>> parse("10-09-2003")
datetime.datetime(2003, 10, 9, 0, 0)

>>> parse("10-09-2003", dayfirst=True)
datetime.datetime(2003, 9, 10, 0, 0)

>>> parse("10-09-03")
datetime.datetime(2003, 10, 9, 0, 0)

>>> parse("10-09-03", yearfirst=True)
datetime.datetime(2010, 9, 3, 0, 0)

На всем протяжении доски:

>>> parse("Wed, July 10, '96")
datetime.datetime(1996, 7, 10, 0, 0)

>>> parse("1996.07.10 AD at 15:08:56 PDT", ignoretz=True)
datetime.datetime(1996, 7, 10, 15, 8, 56)

>>> parse("Tuesday, April 12, 1952 AD 3:30:42pm PST", ignoretz=True)
datetime.datetime(1952, 4, 12, 15, 30, 42)

>>> parse("November 5, 1994, 8:15:30 am EST", ignoretz=True)
datetime.datetime(1994, 11, 5, 8, 15, 30)

>>> parse("3rd of May 2001")
datetime.datetime(2001, 5, 3, 0, 0)

>>> parse("5:50 A.M. on June 13, 1990")
datetime.datetime(1990, 6, 13, 5, 50)

Взгляните на документацию для этого здесь:

http://labix.org/python-dateutil#head-c0e81a473b647dfa787dc11e8c69557ec2c3ecd2

4 голосов
/ 05 октября 2009

Посмотрите на модуль datetime ; существуют определения классов datetime, date и timedelta.

1 голос
/ 06 октября 2009
>>> import datetime
>>> datetime.datetime.strptime('05/10/09 18:00', '%d/%m/%y %H:%M')
datetime.datetime(2009, 10, 5, 18, 0)
>>> datetime.datetime.today()
datetime.datetime(2009, 10, 5, 21, 3, 55, 827787)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...