2009-10-05 24 views
7

Pregunta novato bastante simple:¿Cómo se especifica la fecha y la hora en python?

¿Cuál es el objeto utilizado en python para especificar la fecha (y la hora) en Python?

Por ejemplo, para crear un objeto que tenga una fecha y hora determinadas (digamos '05/10/09 18:00').

EDITAR

Según la petición S. Lott, lo que tengo hasta ahora es:

class Some: 
    date = 

dejo allí, después de que el signo "=" para Soy consciente de que no sabía cuál era el objeto correcto;)

Respuesta

37

ejemplo simple:

>>> 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 
>>> 
4

Mire el módulo datetime; hay definiciones de clase datetime, date y timedelta.

+0

Ya lo he visto pero no sabía por dónde empezar, el documento es demasiado grande – OscarRyz

+4

:(Supongo que tendré que leerlo todo – OscarRyz

+2

@Oscar Reyes: con una pregunta vaga y abierta como la tuya , es realmente difícil precisar la línea exacta de documentación que es relevante. Podría, por ejemplo, proporcionar un fragmento de código que muestre lo que desea hacer. Podría proporcionar una pregunta más detallada. –

4

Nick D tiene la forma oficial de manejar su problema. Si desea pasar una cadena como lo hizo en su pregunta, el módulo dateutil (http://labix.org/python-dateutil) tiene un excelente soporte para ese tipo de cosas.

Para ejemplos, voy a copiar y pegar desde otra respuesta que di hace un tiempo ahora:

ejemplo simple:

>>> 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) 

Para ambiguo:

>>> 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) 

Para en todos los ámbitos:

>>> 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) 

Tome un vistazo a la documentación aquí:

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

1
>>> 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) 

Por lo tanto, puede cadena de formato de usar para convertir a datetime.datetime objeto o si está particularmente mirando a la fecha de hoy podría utilizar today() función.

Cuestiones relacionadas