¿Cómo convierto un objeto datetime o date en una indicación de fecha y hora POSIX en python? Existen métodos para crear un objeto datetime a partir de una marca de tiempo, pero no parece encontrar ninguna forma obvia de hacer la operación de la manera opuesta.Conversión de fecha y hora a hora POSIX
Respuesta
import time, datetime
d = datetime.datetime.now()
print time.mktime(d.timetuple())
Para los cálculos UTC, calendar.timegm
es la inversa de time.gmtime
.
import calendar, datetime
d = datetime.datetime.utcnow()
print calendar.timegm(d.timetuple())
Nota: 'calendar.timegm()' espera la entrada UTC pero el resultado (marca de tiempo) no está en ninguna zona horaria. Han transcurrido solo unos segundos desde la época (== 1969-12-31T19: 00: 00-05: 00 (Nueva York) == 1970-01-01T00: 00: 00Z (UTC) == 1970-01-01T03: 00: 00 + 03: 00 (Moscú)) - un único momento fijo en el tiempo. – jfs
Corrección: debido a segundos intercalares, "segundos desde Epoch" no están * transcurridos * SI segundos desde '1970-01-01 00: 00: 00 + 00: 00'. ['utc_to_tai()' function] (https://gist.github.com/zed/a912498be36c6a947c33#file-utc_to_tai-py-L25) podría utilizarse para calcular los segundos SI transcurridos. – jfs
en Python, time.time() puede regresar segundo como un número de coma flotante que incluye un componente decimal con los microsegundos. Para convertir una fecha y hora a esta representación, debe agregar el componente microsegundos porque el timetuple directo no lo incluye.
import time, datetime
posix_now = time.time()
d = datetime.datetime.fromtimestamp(posix_now)
no_microseconds_time = time.mktime(d.timetuple())
has_microseconds_time = time.mktime(d.timetuple()) + d.microsecond * 0.000001
print posix_now
print no_microseconds_time
print has_microseconds_time
Excelente respuesta – pumazi
no utilice la hora local para un viaje de ida y vuelta (ts -> local -> ts). Podría romperse durante las transiciones DST. Puede ampliar [timegm()] (http://hg.python.org/cpython/file/3.3/Lib/calendar.py#l597) para incluir microsegundos y usarlo para ts -> utc -> ts transformations. – jfs
Tenga en cuenta que Python ahora (3.5.2) incluye una built-in method para esto en datetime
objetos:
>>> import datetime
>>> now = datetime.datetime.now()
>>> now.timestamp() # Local time
1509315202.161655
>>> now.replace(tzinfo=datetime.timezone.utc).timestamp() # UTC
1509329602.161655
- 1. conversión de char a fecha y hora
- 2. conversión de formato de fecha y hora a 12 horas
- 3. Python 3: fecha y hora a fecha y hora: ¿de dónde viene esta hora adicional?
- 4. conversión de cadenas a la fecha y hora javascript
- 5. de fecha y hora
- 6. Convertir hora UTC a fecha hora local
- 7. Compilar fecha y hora
- 8. C++ fecha y hora
- 9. C# cadena de conversión a la hora de fecha
- 10. Conversión de la cadena de fecha y hora de la fecha a la fecha
- 11. Conversión de fecha/hora: representación de cadena a time_t
- 12. Conversión del tiempo de época a "fecha/hora" real
- 13. necesita conversión flexible de fecha y hora con joda
- 14. conversión de fecha y hora para Unix Timestamp
- 15. Formato de fecha y hora
- 16. Conversión de la hora a militar
- 17. Obtener Fecha y hora actual y el tiempo con [fecha NSDate] fecha y hora
- 18. Convertir cadena a fecha y hora C#
- 19. Conversión de un formato de fecha personalizado (cadena) a una fecha y hora
- 20. Fecha y hora en Groovy
- 21. Python: obtener la fecha y hora de la última hora
- 22. Rieles: Obtenga la hora de una fecha y hora
- 23. Obteniendo solo hora/minuto de fecha y hora
- 24. Formato Excepción: fecha y hora
- 25. Fecha y hora en java
- 26. Javascript Comparar fecha y hora
- 27. DateTimePicker: elegir fecha y hora
- 28. Construir fecha y hora usando la fecha de hoy a una hora específica
- 29. cómo emitir datetime2 como fecha y hora
- 30. PHP Fecha Hora Hora actual Agregar minutos
Gracias. Sabía que tenía que ser algo estúpidamente simple, pero no pude resolverlo. –
Parece que, según la plataforma, el tiempo no tiene el método mktime – Tirno
Tenga en cuenta que le da la hora local, no la UTC. Para UTC ver [respuesta de fixermark] (http://stackoverflow.com/q/5872022/60075). –