Python: fecha y hora
Un programa de Python puede manejar la fecha y la hora de varias formas. La conversión entre formatos de fecha es una tarea común para las computadoras. Los módulos de tiempo y calendario 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. Los instantes particulares en el tiempo se expresan en segundos desde las 00:00:00 horas del 1 de enero de 1970 (época).
Hay un popular timemódulo disponible en Python que proporciona funciones para trabajar con tiempos y para convertir entre representaciones. La función time.time () devuelve la hora actual del sistema en ticks desde las 00:00:00 horas del 1 de enero de 1970 (época).
Ejemplo
#!/usr/bin/python
import time; # This is required to include time module.
ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks
Esto produciría un resultado similar a lo siguiente:
Number of ticks since 12:00am, January 1, 1970: 7186862.73399
La aritmética de fechas es fácil de hacer con ticks. Sin embargo, las fechas anteriores a la época no se pueden representar de esta forma. Las fechas en el futuro lejano tampoco se pueden representar de esta manera: el punto de corte es en algún momento en 2038 para UNIX y Windows.
¿Qué es TimeTuple?
Muchas de las funciones de tiempo de Python manejan el tiempo como una tupla de 9 números, como se muestra a continuación:
Índice | Campo | Valores |
---|---|---|
0 | Año de 4 dígitos | 2008 |
1 | Mes | 1 hasta 12 |
2 | Día | 1 hasta 31 |
3 | Hora | 0 hasta 23 |
4 | Minuto | 0 hasta 59 |
5 | Segundo | 0 a 61 (60 o 61 son segundos intercalares) |
6 | Día de la semana | 0 a 6 (0 es lunes) |
7 | Día del año | 1 a 366 (día juliano) |
8 | Horario de verano | -1, 0, 1, -1 significa que la biblioteca determina el horario de verano |
La tupla anterior es equivalente a struct_timeestructura. Esta estructura tiene los siguientes atributos:
Índice | Atributos | Valores |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 hasta 12 |
2 | tm_mday | 1 hasta 31 |
3 | tm_hour | 0 hasta 23 |
4 | tm_min | 0 hasta 59 |
5 | tm_sec | 0 a 61 (60 o 61 son segundos intercalares) |
6 | tm_wday | 0 a 6 (0 es lunes) |
7 | tm_yday | 1 a 366 (día juliano) |
8 | tm_isdst | -1, 0, 1, -1 significa que la biblioteca determina el horario de verano |
Obtener la hora actual
Para traducir un instante de tiempo de segundos desde el valor de punto flotante de época a una tupla de tiempo, pase el valor de punto flotante a una función (por ejemplo, localtime) que devuelve una tupla de tiempo con los nueve elementos válidos.
#!/usr/bin/python
import time;
localtime = time.localtime(time.time())
print "Local current time :", localtime
Esto produciría el siguiente resultado, que podría formatearse en cualquier otra forma presentable:
Local current time : 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 tiempo formateado
Puede formatear en cualquier momento según sus requisitos, pero el método simple para obtener la hora en formato legible es asctime () -
#!/usr/bin/python
import time;
localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime
Esto produciría el siguiente resultado:
Local current time : Tue Jan 13 10:17:09 2009
Obtener calendario por un mes
El módulo de calendario ofrece una amplia gama de métodos para jugar con calendarios anuales y mensuales. Aquí, imprimimos un calendario para un mes determinado (enero de 2008):
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal
Esto produciría el siguiente resultado:
Here is the calendar:
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 del tiempo
Hay un popular timemódulo disponible en Python que proporciona funciones para trabajar con tiempos y para convertir entre representaciones. Aquí está la lista de todos los métodos disponibles:
No Señor. | Función con descripción |
---|---|
1 | time.altzone El desplazamiento de la zona horaria local de DST, en segundos al oeste de UTC, si se define una. Esto es negativo si la zona horaria local de DST está al este de UTC (como en Europa Occidental, incluido el Reino Unido). Use esto solo si la luz del día es distinta de cero. |
2 | time.asctime ([tupletime]) Acepta una tupla de tiempo y devuelve una cadena legible de 24 caracteres como 'Tue Dec 11 18:07:14 2008'. |
3 | time.clock () Devuelve el tiempo de CPU actual como un número de segundos en coma flotante. Para medir los costos computacionales de diferentes enfoques, el valor de time.clock es más útil que el de time.time (). |
4 | time.ctime ([segundos]) Como asctime (localtime (segundos)) y sin argumentos es como asctime () |
5 | time.gmtime ([segundos]) Acepta un instante expresado en segundos desde la época y devuelve una tupla de tiempo t con la hora UTC. Nota: t.tm_isdst es siempre 0 |
6 | time.localtime ([segundos]) Acepta un instante expresado en segundos desde la época y devuelve una tupla de tiempo t con la hora local (t.tm_isdst es 0 o 1, dependiendo de si el horario de verano se aplica a los segundos instantáneos según las reglas locales). |
7 | time.mktime (tupletime) Acepta un instante expresado como una tupla de tiempo en la hora local y devuelve un valor de punto flotante con el instante expresado en segundos desde la época. |
8 | time.sleep (segundos) Suspende el hilo de llamada durante segundos. |
9 | time.strftime (fmt [, tupletime]) Acepta un instante expresado como una tupla de tiempo en la hora local y devuelve una cadena que representa el instante especificado por la cadena fmt. |
10 | time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y') Analiza str según la cadena de formato fmt y devuelve el instante en formato de tupla de tiempo. |
11 | tiempo tiempo( ) Devuelve el instante de tiempo actual, un número de segundos en coma flotante desde la época. |
12 | time.tzset () Restablece las reglas de conversión de tiempo utilizadas por las rutinas de la biblioteca. La variable de entorno TZ especifica cómo se hace esto. |
Repasemos brevemente las funciones:
Hay dos atributos importantes disponibles con el módulo de tiempo:
No Señor. | Atributo con descripción |
---|---|
1 | time.timezone El atributo time.timezone es el desplazamiento en segundos de la zona horaria local (sin DST) de UTC (> 0 en las Américas; <= 0 en la mayor parte de Europa, Asia, África). |
2 | time.tzname El atributo time.tzname es un par de cadenas dependientes de la configuración regional, que son los nombres de la zona horaria local sin y con horario de verano, respectivamente. |
El módulo de calendario
El módulo de calendario proporciona funciones relacionadas con el calendario, incluidas funciones para imprimir un calendario de texto para un mes o año determinado.
De forma predeterminada, el calendario toma el lunes como primer día de la semana y el domingo como el último. Para cambiar esto, llame a la función calendar.setfirstweekday ().
Aquí hay una lista de funciones disponibles con el módulo de calendario :
No Señor. | Función con descripción |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) Devuelve una cadena de varias líneas con un calendario para el año y el año formateado en tres columnas separadas por c espacios. w es el ancho en caracteres de cada fecha; cada línea tiene una longitud de 21 * w + 18 + 2 * c. l es el número de líneas de cada semana. |
2 | calendar.firstweekday( ) Devuelve la configuración actual para el día de la semana que comienza cada semana. De forma predeterminada, cuando el calendario se importa por primera vez, es 0, es decir, el lunes. |
3 | calendar.isleap(year) Devuelve True si el año es bisiesto; de lo contrario, Falso. |
4 | calendar.leapdays(y1,y2) Devuelve el número total de días bisiestos en los años dentro del rango (y1, y2). |
5 | calendar.month(year,month,w=2,l=1) Devuelve una cadena de varias líneas con un calendario para el mes mes del año, una línea por semana más dos líneas de encabezado. w es el ancho en caracteres de cada fecha; cada línea tiene una longitud de 7 * w + 6. l es el número de líneas de cada semana. |
6 | calendar.monthcalendar(year,month) Devuelve una lista de listas de ints. Cada sublista denota una semana. Los días fuera del mes del año del año se establecen en 0; los días dentro del mes se establecen en su día del mes, 1 en adelante. |
7 | calendar.monthrange(year,month) Devuelve dos enteros. El primero es el código del día de la semana para el primer día del mes mes en año año; el segundo es el número de días del mes. Los códigos de días laborables son del 0 (lunes) al 6 (domingo); los números de los meses van del 1 al 12. |
8 | calendar.prcal(year,w=2,l=1,c=6) Como imprimir calendar.calendar (año, w, l, c). |
9 | calendar.prmonth(year,month,w=2,l=1) Como imprimir calendar.month (año, mes, w, l). |
10 | calendar.setfirstweekday(weekday) Establece el primer día de cada semana en el código de día de la semana. Los códigos de los días de semana son del 0 (lunes) al 6 (domingo). |
11 | calendar.timegm(tupletime) El inverso de time.gmtime: acepta un instante de tiempo en forma de tupla de tiempo y devuelve el mismo instante como un número de segundos en coma flotante desde la época. |
12 | calendar.weekday(year,month,day) Devuelve el código del día de la semana para la fecha indicada. Los códigos de días laborables son del 0 (lunes) al 6 (domingo); los números de los meses son del 1 (enero) al 12 (diciembre). |
Otros módulos y funciones
Si está interesado, aquí encontrará una lista de otros módulos y funciones importantes para jugar con la fecha y la hora en Python: