-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathoperacionesFechas.py
168 lines (120 loc) · 5.64 KB
/
operacionesFechas.py
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# -*- coding: utf-8 -*-
# ----------------------------------------------------------------------------
# Nombre: operacionesFechas.py
# Autor: Miguel Andres Garcia Niño
# Creado: 08 de Agosto 2018
# Modificado: 08 de Agosto 2018
# Copyright: (c) 2018 by Miguel Andres Garcia Niño, 2018
# License: Apache License 2.0
# ----------------------------------------------------------------------------
__versión__ = "1.0"
# Versión Python: 3.5.2
"""
El módulo *operacionesFechas* permite realizar operaciones con fechas.
"""
from arrow import utcnow, get
# =================== FUNCIÓN operacionesFechas ====================
def operacionesFechas():
"""
Tokens
Use los siguientes tokens en el análisis y el formateo. Tenga en cuenta
que no son lo mismo que los tokens para strptime (3):
Token Salida
Año YYYY 2000, 2001, 2002 ... 2018, 2019
YY 00, 01, 02 ... 18, 19
Mes MMMM Enero, Febrero, Marzo ... Noviembre, Diciembre
MMM Ene, Feb, Mar ... Nov, Dic
MM 01, 02, 03 ... 11, 12
M 1, 2, 3 ... 11, 12
Día del año DDDD 001, 002, 003 ... 364, 365
DDD 1, 2, 3 ... 4, 5
Dia del mes DD 01, 02, 03 ... 30, 31
D 1, 2, 3 ... 30, 31
Día de la semana dddd Lunes, Martes, Miércoles ... Sábado, Domingo
ddd Lun, Mar, Mie ... Sab, Dom
d 1, 2, 3 ... 6, 7
Idiomas
Ingles: 'en', 'en_us', 'en_gb', 'en_au', 'en_be', 'en_jp', 'en_za', 'en_ca'
Español: 'es', 'es_es'
"""
# Obtener fecha del Sistema Operativo
utc = utcnow().to("local")
anio = utc.format("YYYY, YY")
mes = utc.format("MMMM, MMM, MM, M", locale="es")
diaAnio = utc.format("DDDD, DDD")
diaMes = utc.format("DD, D")
diaSemana = utc.format("dddd, ddd, d", locale="es")
diaMesAnio = utc.format("DD/MM/YYYY")
anioMesDia = utc.format("YYYY-MM-DD")
print("Año token(YYYY, YY):", anio)
print("Mes token(MMMM, MMM, MM, M):", mes)
print("Día del año token(DDDD, DDD):", diaAnio)
print("Dia del mes token(DD, D):", diaMes)
print("Día de la semana token(dddd, ddd, d):", diaSemana)
print()
print("Formato Día/Mes/Año:", diaMesAnio)
print("Formato Año-Mes-Día:", anioMesDia)
print()
# ================================================================
cadenaAnalizar = "2018-08-08"
analizar = get(cadenaAnalizar, ["DD/MM/YYYY", "YYYY-MM-DD", "DD-MMMM-YYYY"])
print("Analizar cadena:", analizar.format("DD/MM/YYYY"))
print("Fecha tipo datetime.date:", type(analizar.date()), analizar.date())
print()
# ================================================================
fechaUno = "2018-06-06"
fechaDos = "2019-06-06"
print("Fecha de referencia Uno:", fechaUno)
print("Fecha de referencia Dos:", fechaDos)
print()
restarFechas = get(fechaDos, "YYYY-MM-DD") - get(fechaUno, "YYYY-MM-DD")
print("Restar fechas:", restarFechas.days)
print()
# ================================================================
# shift
modificarDias = get(fechaUno, "YYYY-MM-DD").shift(days=2)
modificarSemanas = get(fechaUno, "YYYY-MM-DD").shift(weeks=1)
modificarMeses = get(fechaUno, "YYYY-MM-DD").shift(months=2)
modificarAnios = get(fechaUno, "YYYY-MM-DD").shift(years=1)
print("Modificar días:", modificarDias.format("YYYY-MM-DD"),
modificarDias.format("YYYY-MMMM-dddd", locale="es"))
print("Modificar semanas:", modificarSemanas.format("YYYY-MM-DD"))
print("Modificar meses:", modificarMeses.format("YYYY-MM-DD"))
print("Modificar años:", modificarAnios.format("YYYY-MM-DD"))
print()
# ================================================================
# replace
reemplazarDia = get(fechaUno, "YYYY-MM-DD").replace(day=7)
reemplazarMes = get(fechaUno, "YYYY-MM-DD").replace(month=7)
reemplazarAnio = get(fechaUno, "YYYY-MM-DD").replace(year=2019)
print("Reemplazar día:", reemplazarDia.format("YYYY-MM-DD"))
print("Reemplazar mes:", reemplazarMes.format("YYYY-MM-DD"))
print("Reemplazar año:", reemplazarAnio.format("YYYY-MM-DD"))
print()
# ===================== FUNCIÓN ejemploFechas ======================
def ejemploFechas():
"""Iterar sobre un conjunto de datos (Usuario, fecha de nacimiento) y guadar en
dos listas los usuarios que nacieron antes y después de 1990-06-07."""
datos = [("Andres Niño", "06/06/1990"),
("Donald Trump", "1991-06-05"),
("Elon Musk", "05/06/1990"),
("Alberto Canosa", "1992-06-05"),
("Richard Branson", "1993/02/10"),
("Guido van Rossum", "1990 04 20"),
]
fechaComparar = "1990-06-07"
antes, despues = [], []
for dato in datos:
fechaNacimiento = get(dato[1], ["YYYY-MM-DD", "DD/MM/YYYY", "YYYY/MM/DD", "YYYY MM DD"])
fecha = get(fechaComparar, "YYYY-MM-DD")
fechaNacimientoFormato = fechaNacimiento.format("YYYY-MM-DD")
if fechaNacimiento < fecha:
antes.append((dato[0], fechaNacimientoFormato))
else:
despues.append((dato[0], fechaNacimientoFormato))
print("Usuarios que nacieron antes de 1990-06-07:", antes)
print()
print("Usuarios que nacieron después de 1990-06-07:", despues)
# ======================= LLAMAR FUNCIONES =========================
operacionesFechas()
ejemploFechas()