Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Dominando fechas y horas en Python: Guía práctica

Un programa Python puede manejar fecha y hora de varias formas. Convertir entre formatos de fecha es una tarea común. Los módulos time y calendar de Python ayudan a rastrear fechas y horas.

¿Qué es Tick?

Los intervalos de tiempo son números de punto flotante en unidades de segundos. Instantes particulares se expresan en segundos desde las 00:00:00 hrs del 1 de enero de 1970 (epoch).

El popular módulo time proporciona funciones para trabajar con tiempos y convertir entre representaciones. La función time.time() devuelve la hora actual del sistema en ticks desde el epoch.

Ejemplo

Demo en vivo
#!/usr/bin/python
import time
ticks = time.time()
print "Número de ticks desde 12:00am, 1 enero 1970:", ticks

Resultado típico:

Número de ticks desde 12:00am, 1 enero 1970: 7186862.73399

La aritmética de fechas es fácil con ticks. Sin embargo, fechas antes del epoch no pueden representarse así. Fechas muy futuras tampoco - el límite es alrededor de 2038 para UNIX y Windows.

¿Qué es TimeTuple?

Muchas funciones de time manejan el tiempo como tupla de 9 números:

ÍndiceCampoValores
0Año 4 dígitos2008
1Mes1 a 12
2Día1 a 31
3Hora0 a 23
4Minuto0 a 59
5Segundo0 a 61 (60 o 61 son segundos intercalares)
6Día de semana0 a 6 (0 es lunes)
7Día del año1 a 366 (día juliano)
8Ahorro de luz diurna-1, 0, 1, -1 significa que la librería determina DST

Esta tupla equivale a la estructura struct_time con atributos:

ÍndiceAtributosValores
0tm_year2008
1tm_mon1 a 12
2tm_mday1 a 31
3tm_hour0 a 23
4tm_min0 a 59
5tm_sec0 a 61
6tm_wday0 a 6 (0 es lunes)
7tm_yday1 a 366
8tm_isdst-1, 0, 1, -1 significa librería determina DST

Obtener hora actual

Para convertir un instante desde segundos desde epoch a time-tuple, pasa el valor a función (ej. localtime) que devuelve time-tuple con 9 items válidos.

Demo en vivo
#!/usr/bin/python
import time
hora_local = time.localtime(time.time())
print "Hora local actual:", hora_local

Resultado (formateable):

Hora local actual: time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

Obtener hora formateada

Forma simple de obtener hora legible es asctime():

Demo en vivo
#!/usr/bin/python
import time
hora_local = time.asctime(time.localtime(time.time()))
print "Hora local actual:", hora_local

Resultado:

Hora local actual: Tue Jan 13 10:17:09 2009

Obtener calendario para un mes

El módulo calendar da métodos para calendarios anuales y mensuales. Imprimimos calendario para enero 2008:

Demo en vivo
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Aquí está el calendario:"
print cal

Resultado:

Aquí está el calendario:
January 2008
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

El módulo time

Métodos disponibles en el módulo time:

NºFunción con descripción
1time.altzone - Offset de zona horaria DST local en segundos al oeste de UTC.
2time.asctime([tuplatiempo]) - Acepta time-tuple y devuelve string legible de 24 caracteres.
3time.clock() - Tiempo CPU actual como float. Útil para medir costos computacionales.
4time.ctime([segundos]) - Como asctime(localtime(segundos)).
5time.gmtime([segundos]) - Time-tuple con hora UTC. tm_isdst siempre 0.
6time.localtime([segundos]) - Time-tuple con hora local.
7time.mktime(tuplatiempo) - Convierte time-tuple local a segundos desde epoch.
8time.sleep(segundos) - Suspende hilo por segundos.
9time.strftime(fmt[,tuplatiempo]) - Formatea instante según string fmt.
10time.strptime(str, fmt='%a %b %d %H:%M:%S %Y') - Parsea string según formato.
11time.time() - Instante actual, float segundos desde epoch.
12time.tzset() - Reinicia reglas de conversión de hora. Variable TZ especifica cómo.

Atributos importantes del módulo time:

NºAtributo con descripción
1time.timezone - Offset en segundos de zona local (sin DST) desde UTC.
2time.tzname - Par de strings dependientes de locale: nombres de zona sin y con DST.

El módulo calendar

El módulo calendar provee funciones relacionadas con calendarios, incluyendo impresión de calendario textual para mes o año dado.

Por defecto, calendar toma lunes como primer día de semana y domingo como último. Para cambiar, usa calendar.setfirstweekday().

Funciones disponibles en calendar:

NºFunción con descripción
1calendar.calendar(año,w=2,l=1,c=6) - String multilínea con calendario del año.
2calendar.firstweekday() - Configuración actual del día que inicia la semana (0=lunes).
3calendar.isleap(año) - True si año bisiesto, False en caso contrario.
4calendar.leapdays(y1,y2) - Total días bisiestos en range(y1,y2).
5calendar.month(año,mes,w=2,l=1) - String multilínea con calendario del mes.
6calendar.monthcalendar(año,mes) - Lista de listas de ints (semanas).
7calendar.monthrange(año,mes) - Dos enteros: código día semana primer día y días del mes.
8calendar.prcal(año,w=2,l=1,c=6) - Como print calendar.calendar().
9calendar.prmonth(año,mes,w=2,l=1) - Como print calendar.month().
10calendar.setfirstweekday(día_semana) - Establece primer día de semana (0=lunes a 6=domingo).
11calendar.timegm(tuplatiempo) - Inverso de time.gmtime: time-tuple a segundos desde epoch.
12calendar.weekday(año,mes,día) - Código día semana para fecha dada (0=lunes, 6=domingo).

Otros módulos y funciones

Si te interesa, aquí hay otros módulos importantes para fecha y hora:

python

  1. Dominando tipos de datos en Python: Guía práctica
  2. Dominando operadores en Python: Guía completa
  3. Dominando la sentencia pass en Python: Guía práctica
  4. Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
  5. Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
  6. Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
  7. Obtener la Fecha y Hora Actual en Python: Guía Práctica
  8. Python: Obtener Hora Actual y Datos de Zona Horaria Fácilmente
  9. Dominar el Módulo time de Python: Funciones, Structs y Ejemplos Prácticos
  10. Dominar time.sleep() en Python: Mejores Prácticas, Multihilo y Ejemplos Reales
  11. Dominando Fecha y Hora en Java: Constructores, Métodos y Mejores Prácticas