English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Prefacio
En el trabajo de desarrollo, a menudo necesitamos usar fechas y horas, como:
Python proporciona varios módulos integrados para operar con fechas y horas: el módulo time, el módulo datetime y el módulo calendar. El módulo time se implementa mediante la llamada a la biblioteca C, por lo que algunos métodos pueden no estar disponibles en ciertas plataformas, pero la mayoría de las interfaces proporcionadas son básicamente consistentes con la biblioteca estándar time.h de C. En comparación con el módulo time, el módulo datetime proporciona interfaces más intuitivas, fáciles de usar y más potentes.
I. Explicación de términos relacionados
II. Formas de presentación del tiempo
Las formas comunes de presentación del tiempo son:
En Python, también hay otras formas de representar el tiempo:
Sobre el módulo datetime, la clase datetime se explicará en detalle a continuación, aquí se menciona brevemente time.struct_time.
El objeto time.struct_time contiene las siguientes propiedades:
Subíndice/Índice | Nombre del atributo | Descripción |
---|---|---|
0 | tm_year | El año, como 2017 |
1 | tm_mon | El mes, el rango de valores es [1, 12] |
2 | tm_mday | El día del mes, el rango de valores es [1-31] |
3 | tm_hour | Horas, el rango de valores es [0-23] |
4 | tm_min | Minutos, el rango de valores es [0, 59] |
5 | tm_sec | Segundos, el rango de valores es [0, 61] |
6 | tm_wday | El día de la semana en una semana, el rango de valores es [0-6], 0 representa lunes |
7 | tm_yday | El día del año, el rango de valores es [1, 366] |
8 | tm_isdst | Si es horario de verano, los valores posibles son: 0 , 1 o -1 |
Hay dos formas de obtener valores de propiedades:
Es necesario aclarar que los atributos de la instancia struct_time son de solo lectura, no se pueden modificar.
Tercero, módulo time
El módulo time se utiliza principalmente para el acceso y la conversión de tiempo, este módulo proporciona varias funciones relacionadas con el tiempo.
1. Lista de funciones
Método/Atributo | Descripción |
---|---|
time.altzone | Devuelve la diferencia en segundos con el tiempo UTC, con unidades de segundo (en el oeste este valor es positivo, en el este este valor es negativo). Representa la compensación de la zona horaria DST local, solo se usa cuando daylight no es 0. |
time.clock() | Devuelve los segundos de tiempo de ejecución del procesador del proceso actual (sin incluir el tiempo de sleep), con valor en decimal; este método en Python3.3Se ha cambiado a time.process_time() |
time.asctime([t]) | Convierte un tiempo en forma de tupla o struct_time (se puede obtener mediante los métodos gmtime() y localtime()) en una24Una cadena de caracteres de tiempo de una caracter, con formato: "Fri Aug 19 11:14:16 2016Si no se proporciona el parámetro t, se toma el valor devuelto por localtime() como parámetro. |
time.ctime([secs]) | La función es la misma que la anterior, convierte un timestamp de segundos en una cadena de tiempo local. Si no se proporciona el parámetro secs o su valor es None, se toma el valor devuelto por el método time() como valor predeterminado. ctime(secs) es equivalente a asctime(localtime(secs)) |
time.time() | 返回时间戳(自1970-1-1 0:00:00 至今所经历的秒数) |
time.localtime([secs]) | 返回以指定时间戳对应的本地时间的 struct_time对象(可以通过下标,也可以通过 .属性名 的方式来引用内部属性)格式 |
time.localtime(time.time()) + n*3600) | 返回n个小时后本地时间的 struct_time对象格式(可以用来实现类似crontab的功能) |
time.gmtime([secs]) | 返回指定时间戳对应的utc时间的 struct_time对象格式(与当前本地时间差8个小时) |
time.gmtime(time.time()) + n*3600) | 返回n个小时后utc时间的 struct_time对象(可以通过 .属性名 的方式来引用内部属性)格式 |
time.strptime(time_str, time_format_str) | 将时间字符串转换为struct_time时间对象,如:time.strptime('2017-01-13 17:07', '%Y-%m-%d %H:%M' |
time.mktime(struct_time_instance) | 将struct_time对象实例转换成时间戳 |
time.strftime(time_format_str, struct_time_instance) | 将struct_time对象实例转换成字符串 |
2. 练习
获取时间戳格式的时间
>>> time.time() 1486188022.862
获取struct_time格式的时间
>>> time.localtime() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')2, tm_sec=34, tm_wday=5, tm_yday=35, tm_isdst=0) >>> time.gmtime() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6','%Y%m%d%H%M')2, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0)
获取字符串格式的时间
>>> time.ctime() 'Sat Feb 04 14:06:42 2017' >>> time.asctime() 'Sat Feb 04 14:06:47 2017'
时间戳格式转struct_time格式时间
>>> t1 = time.time() >>> print(t1) 1486188476.9 >>> t2 = time.localtime(t1) >>> print(t2) time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0) >>> t3 = time.gmtime(t1) >>> print(t3) time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=6','%Y%m%d%H%M')7, tm_sec=56, tm_wday=5, tm_yday=35, tm_isdst=0) >>>
字符串格式转struct_time格式时间
>>> time.strptime('Sat Feb 04 14:06:42 2017) time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('Sat Feb 04 14:06:42 2017', '%a %b %d %H:%M:%S %Y') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')6, tm_sec=42, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('2017-02-04 14:12', '%Y-%m-%d %H:%M' time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('2017/02/04 14:12', '%Y/%m/%d %H:%M' time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> time.strptime('201702041412', '%Y%m%d%H%M') time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=14','%Y%m%d%H%M')12, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1)
, tm_min=
Conversión de formato struct_time a formato de cadena de tiempo-%m->>> time.strftime('%d %H:%M', time.localtime()) '2017-02-04 14:19' Conversión de formato struct_time a formato de timestamp >>> time.mktime(time.localtime()) 1486189282.0
3Conversión de formato de tiempo
El formato de timestamp y el formato de cadena de tiempo, aunque se pueden convertir mediante el método ctime([secs]), la forma de cadena no se adapta bien a la situación de China. Por lo tanto, en general, no se pueden convertir directamente, necesitan de struct_time como intermediario, la relación de conversión es como sigue:
Noticia: El formato '%H:%M:%S' se puede reemplazar directamente con '%X'.
Cuatro, módulo datetime
El módulo datetime proporciona clases para manejar fechas y tiempos, tanto de manera simple como compleja. Aunque admite algoritmos de fechas y tiempos, su enfoque principal es proporcionar funciones de extracción de propiedades eficientes para formateo de salida y operaciones.
1Clases definidas en el módulo datetime
El módulo datetime define las siguientes clases:
Nombre de clase | Descripción |
---|---|
datetime.date | Representa la fecha, propiedades comunes: year, month y day |
datetime.time | Representa el tiempo, propiedades comunes: hour, minute, second, microsecond |
datetime.datetime | Representa la fecha y hora |
datetime.timedelta | Representa el intervalo de tiempo entre dos instancias de date, time, datetime, con una resolución (unidad mínima) que puede alcanzar microsegundos |
datetime.tzinfo | Clase base abstracta para objetos de información de zona horaria. Se utilizan en datetime y time para ajustar el tiempo personalizado. |
datetime.timezone | Python 3.2Una nueva funcionalidad añadida en el módulo datetime, que implementa la clase base abstracta tzinfo, representa el desplazamiento fijo con respecto a UTC |
Es necesario aclarar que: los objetos de estas clases son inmutables.
Relaciones entre clases:
object date datetime time timedelta tzinfo timezone
2Constantes definidas en el módulo datetime
Nombre de constante | Descripción |
---|---|
datetime.MINYEAR | El valor mínimo permitido para el año en objetos datetime.date o datetime.datetime, es1 |
datetime.MAXYEAR | El valor máximo del año permitido para el objeto datetime.date o datetime.datetime, solo es9999 |
3. La clase datetime.date
Definición de la clase datetime.date
class datetime.date(year, month, day)
Los parámetros year, month y day son obligatorios, y los rangos de valores de cada parámetro son:
nombre del parámetro | rango de valores |
---|---|
año | [MINYEAR, MAXYEAR] |
mes | [1, 12] |
día | [1, día del mes del año especificado] |
método y atributo de clase
método de clase/Nombre del atributo | Descripción |
---|---|
date.max | La fecha más grande que puede representar el objeto date:9999-12-31 |
date.min | La más pequeña logitud que puede representar el objeto date: 00001-01-01 |
date.resoluation | La unidad más pequeña de la fecha que representa el objeto date: día |
date.today() | Devuelve un objeto date que representa la fecha local actual |
date.fromtimestamp(timestamp) | Devuelve un objeto date para una marca de tiempo dada |
método y atributo del objeto
método del objeto/Nombre del atributo | Descripción |
---|---|
d.year | Año |
d.month | Mes |
d.day | Día |
d.replace(year[, month[, day]]) | Genera y devuelve un nuevo objeto date, sin modificar el objeto original |
d.timetuple() | Devuelve el objeto struct_time correspondiente a la fecha |
d.toordinal() | Devuelve la fecha desde 0001-01-01 Cuántos días al principio |
d.weekday() | Devuelve cuál es el día de la semana, [0, 6], 0 representa lunes |
d.isoweekday() | Devuelve cuál es el día de la semana, [1, 7], 1Representa lunes |
d.isocalendar() | Devuelve una tupla en formato: (año, día de la semana, día de la semana ISO) |
d.isoformat() | Devuelve 'YYYY-MM-Cadena de fecha en formato DD' |
d.strftime(format) | Devuelve una cadena de fecha en formato especificado, similar a la función strftime(format, struct_time) del módulo time |
Ejemplo
>>> import time >>> from datetime import date >>> >>> date.max datetime.date(9999, 12, 31) >>> date.min datetime.date(1, 1, 1) >>> date.resolution datetime.timedelta(1) >>> date.today() datetime.date(2017, 2, 4) >>> date.fromtimestamp(time.time()) datetime.date(2017, 2, 4) >>> >>> d = date.today() >>> d.year 2017 >>> d.month 2 >>> d.day 4 >>> d.replace(2016) datetime.date(2016, 2, 4) >>> d.replace(2016, 3) >>> d.replace(2016, 3, 2) datetime.date(2016, 3, 2) >>> d.timetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> d.toordinal() 736364 >>> d.weekday() 5 >>> d.isoweekday() 6 >>> d.isocalendar() (2017, 5, 6) >>> d.isoformat() '2017-02-04' >>> d.ctime() 'Sat Feb 4 00:00:00 2017' >>> d.strftime('%Y/%m/%d') '2017/02/04'
4. datetime.time类
time类的定义
class datetime.time(hour, [minute[, second, [microsecond[, tzinfo]]]])
hour为必须参数,其他为可选参数。各参数的取值范围为:
nombre del parámetro | rango de valores |
---|---|
hora | [0, 23] |
minuto | [0, 59] |
segundo | [0, 59] |
microsegundo | [0, 1000000] |
tzinfo | objeto subclase de tzinfo, como una instancia de la clase timezone |
método y atributo de clase
método de clase/Nombre del atributo | Descripción |
---|---|
time.max | time类所能表示的最大时间:time(23, 59, 59, 999999) |
time.min | time类所能表示的最小时间:time(0, 0, 0, 0) |
time.resolution | 时间的最小单位,即两个不同时间的最小差值:1微秒 |
método y atributo del objeto
método del objeto/Nombre del atributo | Descripción |
---|---|
t.hour | 时 |
t.minute | 分 |
t.second | 秒 |
t.microsecond | 微秒 |
t.tzinfo | 返回传递给time构造方法的tzinfo对象,如果该参数未给出,则返回None |
t.replace(hour[, minute[, second[, microsecond[, tzinfo]]]]) | 生成并返回一个新的时间对象,原时间对象不变 |
t.isoformat() | 返回一个‘HH:MM:SS.%f’格式的时间字符串 |
t.strftime() | 返回指定格式的时间字符串,与time模块的strftime(format, struct_time)功能相同 |
Ejemplo
>>> from datetime import time >>> >>> time.max datetime.time(23, 59, 59, 999999) >>> time.min datetime.time(0, 0) >>> time.resolution datetime.timedelta(0, 0, 1) >>> >>> t = time(20, 5, 40, 8888) >>> t.hour 20 >>> t.minute 5 >>> t.second 40 >>> t.microsecond 8888 >>> t.tzinfo >>> >>> t.replace21) datetime.time(21, 5, 40, 8888) >>> t.isoformat() '20:05:40.008888' >>> t.strftime('%H%M%S') '200540' >>> t.strftime('%H%M%S.%f') '200540.008888'
5. clase datetime.datetime
definición de la clase datetime
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
year, month y day son parámetros obligatorios, tzinfo puede ser None o una instancia de la subclase tzinfo.
el rango de valores de cada parámetro es:
nombre del parámetro | rango de valores |
---|---|
año | [MINYEAR, MAXYEAR] |
mes | [1, 12] |
día | [1, día del mes del año especificado] |
hora | [0, 23] |
minuto | [0, 59] |
segundo | [0, 59] |
microsegundo | [0, 1000000] |
tzinfo | objeto subclase de tzinfo, como una instancia de la clase timezone |
si un parámetro está fuera de este rango, se producirá una excepción ValueError.
método y atributo de clase
método de clase/Nombre del atributo | Descripción |
---|---|
datetime.today() | devolver un objeto datetime que representa la fecha y hora actual del período |
datetime.now([tz]) | devolver un objeto datetime con la fecha y hora de la zona horaria especificada, si no se especifica tz, el resultado es el mismo |
datetime.utcnow() | devolver un objeto datetime con la fecha y hora UTC actual |
datetime.fromtimestamp(timestamp[, tz]) | crear un objeto datetime según un timestamp especificado |
datetime.utcfromtimestamp(timestamp) | crear un objeto datetime según un timestamp especificado |
datetime.combine(date, time) | combinar un objeto date y time en un objeto datetime |
datetime.strptime(date_str, format) | convertir una cadena de tiempo en un objeto datetime |
método y atributo del objeto
método del objeto/Nombre del atributo | Descripción |
---|---|
dt.year, dt.month, dt.day | año, mes, día |
dt.hour, dt.minute, dt.second | hora, minuto, segundo |
dt.microsecond, dt.tzinfo | 微秒、时区信息 |
dt.date() | 获取datetime对象对应的date对象 |
dt.time() | 获取datetime对象对应的time对象, tzinfo 为None |
dt.timetz() | 获取datetime对象对应的time对象,tzinfo与datetime对象的tzinfo相同 |
dt.replace([year[, month[, day[, hour[, minute[, second[, microsecond[, tzinfo]]]]]]]]) | 生成并返回一个新的datetime对象,如果所有参数都没有指定,则返回一个与原datetime对象相同的对象 |
dt.timetuple() | 返回datetime对象对应的tuple(不包括tzinfo) |
dt.utctimetuple() | 返回datetime对象对应的utc时间的tuple(不包括tzinfo) |
dt.toordinal() | 同date对象 |
dt.weekday() | 同date对象 |
dt.isocalendar() | 同date独享 |
dt.isoformat([sep]) | 返回一个‘%Y-%m-%d |
dt.ctime() | 等价于time模块的time.ctime(time.mktime(d.timetuple())) |
dt.strftime(format) | 返回指定格式的时间字符串 |
Ejemplo
>>> from datetime import datetime, timezone >>> >>> datetime.today() datetime.datetime(2017, 2, 4, 20, 44, 40, 556318) >>> datetime.now() datetime.datetime(2017, 2, 4, 20, 44, 56, 572615) >>> datetime.now(timezone.utc) datetime.datetime(2017, 2, 4, 12, 45, 22, 881694, tzinfo=datetime.timezone.utc) >>> datetime.utcnow() datetime.datetime(2017, 2, 4, 12, 45, 52, 812508) >>> import time >>> datetime.fromtimestamp(time.time()) datetime.datetime(2017, 2, 4, 20, 46, 41, 97578) >>> datetime.utcfromtimestamp(time.time()) datetime.datetime(2017, 2, 4, 12, 46, 56, 989413) >>> datetime.combine(date(2017, 2, 4), t) datetime.datetime(2017, 2, 4, 20, 5, 40, 8888) >>> datetime.strptime('2017/02/04 20:49', '%Y/%m/%d %H:%M' datetime.datetime(2017, 2, 4, 20, 49) >>> dt = datetime.now() >>> dt datetime.datetime(2017, 2, 4, 20, 57, 0, 621378) >>> dt.year 2017 >>> dt.month 2 >>> dt.day 4 >>> dt.hour 20 >>> dt.minute 57 >>> dt.second 0 >>> dt.microsecond 621378 >>> dt.tzinfo >>> dt.timestamp() 1486213020.621378 >>> dt.date() datetime.date(2017, 2, 4) >>> dt.time() datetime.time(20, 57, 0, 621378) >>> dt.timetz() datetime.time(20, 57, 0, 621378) >>> dt.replace() datetime.datetime(2017, 2, 4, 20, 57, 0, 621378) >>> dt.replace(2016) datetime.datetime(2016, 2, 4, 20, 57, 0, 621378) >>> dt.timetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=-1) >>> dt.utctimetuple() time.struct_time(tm_year=2017, tm_mon=2, tm_mday=4, tm_hour=20, tm_min=57, tm_sec=0, tm_wday=5, tm_yday=35, tm_isdst=0) >>> dt.toordinal() 736364 >>> dt.weekday() 5 >>> dt.isocalendar() (2017, 5, 6) >>> dt.isoformat() '2017-02-04T20:57:00.621378' >>> dt.isoformat(sep='/) '2017-02-04/20:57:00.621378' >>> dt.isoformat(sep=' ') '2017-02-04 20:57:00.621378' >>> dt.ctime() 'Sat Feb 4 20:57:00 2017' >>> dt.strftime('%Y%m%d %H:%M:%S.%f') '20170204 20:57:00.621378'
6. Convertir timestamps y cadenas de fecha utilizando la clase datetime.datetime
7. clase datetime.timedelta
El objeto timedelta representa la diferencia entre dos fechas diferentes. Si se utiliza el módulo time para realizar operaciones aritméticas con fechas, solo se puede convertir primero a formato de timestamp la cadena de formato de fecha y el objeto struct_time, luego sumar o restar n segundos a este timestamp y finalmente convertirlo nuevamente al formato struct_time o cadena. Esto es claramente muy incómodo. Mientras tanto, la clase timedelta proporcionada por el módulo datetime nos permite realizar operaciones aritméticas muy fáciles con los objetos datetime.date, datetime.time y datetime.datetime, y la unidad de diferencia entre dos fechas también es más fácil de controlar.
La unidad de este valor de diferencia puede ser: día, segundo, microsegundo, milisegundo, minuto, hora, semana.
Definición de la clase datetime.timedelta
class datetime.timedelta(días=0, segundos=0, microsegundos=0, milisegundos=0, horas=0, semanas=0)
Todos los parámetros son parámetros predeterminados, por lo tanto, son parámetros opcionales. El valor de los parámetros puede ser un entero o un flotante, también puede ser un número positivo o negativo. Los valores internos se almacenan en days, seconds y microseconds, y todos los otros parámetros se convertirán a esto3unidades:
Luego de esto3Normalizar un número de valores para que su representación sea única:
Atributo de clase
Nombre de atributo de clase | Descripción |
---|---|
timedelta.min | timedelta(-999999999) |
timedelta.max | timedelta(días=999999999, horas=23, minutos=59, segundos =59, microseconds=999999) |
timedelta.resolution | timedelta(microsegundos=1) |
Métodos y atributos de instancia
Método de instancia/Nombre del atributo | Descripción |
---|---|
td.days | días [-999999999, 999999999] |
td.seconds | segundos [0, 86399] |
td.microseconds | microsegundos [0, 999999] |
td.total_seconds() | El número total de segundos en la diferencia de tiempo, equivalente a: td / timedelta(segundos=1) |
Método/Atributo | Descripción |
---|---|
datetime.datetime.now() | Devuelve la hora local actual (instancia del objeto datetime.datetime) |
datetime.datetime.fromtimestamp(timestamp) | Devuelve la hora correspondiente a la marca de tiempo especificada (instancia del objeto datetime.datetime) |
datetime.timedelta() | Devuelve un objeto intervalo de tiempo, que se puede sumar o restar directamente con objetos datetime.datetime |
Ejemplo
>>> import datetime >>> >>> datetime.timedelta(365).total_seconds() # Un año contiene un total de segundos 31536000.0 >>> dt = datetime.datetime.now() >>> dt + datetime.timedelta(3) # 3después de datetime.datetime(2017, 2, 8, 9, 39, 40, 102821) >>> dt + datetime.timedelta(-3) # 3días antes datetime.datetime(2017, 2, 2, 9, 39, 40, 102821) >>> dt + datetime.timedelta(hours=3) # 3horas después datetime.datetime(2017, 2, 5, 12, 39, 40, 102821) >>> dt + datetime.timedelta(hours=-3) # 3horas antes datetime.datetime(2017, 2, 5, 6, 39, 40, 102821) >>> dt + datetime.timedelta(hours=3, segundos =30) # 3hora30 segundos después datetime.datetime(2017, 2, 5, 12, 40, 10, 102821)
Sección 5: Códigos de formato de tiempo
El módulo time struct_time y las clases datetime, date, time del módulo datetime proporcionan el método strftime(), que puede generar una cadena de tiempo en un formato específico. El formato específico se compone de una serie de códigos de formato (caracteres de formato), Python finalmente llama a la función strftme() de la biblioteca C de cada plataforma, por lo que el soporte de todos los códigos de formato puede variar en cada plataforma,具体情况 debe referirse a strftime en la plataforma correspondiente (3) Documento. A continuación, se enumeran los códigos de formato estándar de C (1989Requiere todos los códigos de formato especificados: ellos pueden funcionar en todas las plataformas de implementación estándar de C:
Sección 6: Resumen
Entonces, ¿es mejor usar el módulo time en Python o el módulo datetime para manejar el tiempo? En mi opinión, el módulo datetime básicamente puede satisfacer las necesidades y es realmente más conveniente de usar. Para el módulo time, solo uso el método time.time() para obtener el timestamp del tiempo actual, por supuesto, también se puede obtener a través de datetime.datetime.now().timestamp(), solo parece más complicado. Creo que depende de la costumbre personal, no hay una diferencia absoluta entre lo bueno y lo malo.
Eso es todo el contenido de este artículo, espero que sea útil para su aprendizaje y que todos nos apoyemos mutuamente en el tutorial de clamor.
Declaración: el contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente por humanos y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)