rupython 1.2.11__py3-none-any.whl → 1.2.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rupython/__/342/225/250/320/247/342/225/250/342/226/221/342/225/250/342/224/202/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/233/342/225/250/342/226/223/342/225/250/342/225/233/342/225/244/320/227/342/225/250/342/225/234/342/225/244/320/233/342/225/250/342/225/243_/342/225/250/342/225/221/342/225/250/342/225/233/342/225/250/342/224/244__.py +49 -4
- rupython/__/342/225/250/320/256/342/225/250/342/226/222/342/225/244/320/231/342/225/250/342/225/225/342/225/250/342/225/241_/342/225/244/320/224/342/225/244/320/223/342/225/250/342/225/234/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225__.py +9 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/240/342/225/244/320/221/342/225/250/342/225/225/342/225/250/342/225/234/342/225/244/320/225/342/225/244/320/220.py +206 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/241/342/225/250/320/244.py +61 -76
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/244/342/225/250/342/226/221/342/225/244/320/222/342/225/250/342/226/221/342/225/250/320/242/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/225/235/342/225/244/320/237.py +222 -209
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/252/342/225/244/320/223/342/225/244/320/227/342/225/250/342/226/221.py +87 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/252/342/225/250/342/225/233/342/225/250/342/225/227/342/225/250/342/225/227/342/225/250/342/225/241/342/225/250/342/225/221/342/225/244/320/226/342/225/250/342/225/225/342/225/250/342/225/225.py +529 -396
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/256/342/225/244/320/227/342/225/250/342/225/241/342/225/244/320/220/342/225/250/342/225/241/342/225/250/342/224/244/342/225/244/320/234.py +177 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/257/342/225/250/342/225/233/342/225/244/320/222/342/225/250/342/225/233/342/225/250/342/225/221/342/225/250/342/225/225.py +273 -0
- rupython//342/225/250/320/254/342/225/250/342/225/233/342/225/250/342/224/244/342/225/244/320/223/342/225/250/342/225/227/342/225/250/342/225/225//342/225/250/320/260/342/225/250/342/225/241/342/225/250/342/224/202/342/225/250/320/242/342/225/244/320/233/342/225/244/320/220.py +51 -51
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/METADATA +4 -4
- rupython-1.2.13.dist-info/RECORD +19 -0
- rupython-1.2.11.dist-info/RECORD +0 -15
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/LICENSE +0 -0
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/WHEEL +0 -0
- {rupython-1.2.11.dist-info → rupython-1.2.13.dist-info}/top_level.txt +0 -0
@@ -59,20 +59,20 @@ def Перевести_формат(формат):
|
|
59
59
|
return формат
|
60
60
|
|
61
61
|
class Дата_и_время:
|
62
|
-
def __init__(
|
63
|
-
if len(ПА) > 0 and type(ПА[0]) == datetime.datetime:
|
62
|
+
def __init__(экземпляр, *ПА, **ИА):
|
63
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.datetime: экземпляр._дата_время = ПА[0]
|
64
64
|
else:
|
65
65
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
66
66
|
ИА, Словарь_параметров
|
67
67
|
)
|
68
|
-
|
68
|
+
экземпляр._дата_время = datetime.datetime(*ПА, **ИА)
|
69
69
|
|
70
70
|
@staticmethod
|
71
|
-
def Сейчас(часовой_
|
71
|
+
def Сейчас(часовой_пояс = None):
|
72
72
|
return Дата_и_время(datetime.datetime.now(часовой_пояс))
|
73
73
|
|
74
74
|
@staticmethod
|
75
|
-
def Из_метки_времени(метка_времени, часовой_
|
75
|
+
def Из_метки_времени(метка_времени, часовой_пояс = None):
|
76
76
|
return Дата_и_время(datetime.datetime.fromtimestamp(метка_времени, часовой_пояс))
|
77
77
|
|
78
78
|
@staticmethod
|
@@ -84,124 +84,127 @@ class Дата_и_время:
|
|
84
84
|
формат = Перевести_формат(формат)
|
85
85
|
return Дата_и_время(datetime.datetime.strptime(строка, формат))
|
86
86
|
|
87
|
-
def В_формат(
|
87
|
+
def В_формат(экземпляр, формат):
|
88
88
|
формат = Перевести_формат(формат)
|
89
|
-
return
|
89
|
+
return экземпляр._дата_время.strftime(формат)
|
90
90
|
|
91
|
-
def __str__(
|
91
|
+
def __str__(экземпляр):
|
92
92
|
формат = Перевести_формат(Формат_даты_и_времени)
|
93
|
-
return
|
93
|
+
return экземпляр._дата_время.strftime(формат)
|
94
94
|
|
95
|
-
def Словами(
|
96
|
-
день_недели =
|
95
|
+
def Словами(экземпляр, формат = 'полный'):
|
96
|
+
день_недели = экземпляр.Номер_дня_недели()
|
97
97
|
if формат == 'полный':
|
98
|
-
return f"{Дни_недели_полные[день_недели]}, {
|
98
|
+
return f"{Дни_недели_полные[день_недели]}, {экземпляр.День} {Месяцы_родительный[экземпляр.Месяц]} {экземпляр.Год} года, {экземпляр.Часов:02d}:{экземпляр.Минут:02d}"
|
99
99
|
elif формат == 'краткий':
|
100
|
-
return f"{Дни_недели_краткие[день_недели]}, {
|
100
|
+
return f"{Дни_недели_краткие[день_недели]}, {экземпляр.День} {Месяцы_родительный[экземпляр.Месяц]} {экземпляр.Год} г."
|
101
101
|
elif формат == 'дата':
|
102
|
-
return f"{
|
102
|
+
return f"{экземпляр.День} {Месяцы_родительный[экземпляр.Месяц]} {экземпляр.Год} года"
|
103
103
|
elif формат == 'время':
|
104
|
-
return f"{
|
104
|
+
return f"{экземпляр.Часов:02d}:{экземпляр.Минут:02d}"
|
105
105
|
elif формат == 'день_недели':
|
106
106
|
return Дни_недели_полные[день_недели]
|
107
107
|
else:
|
108
108
|
raise ValueError("Неподдерживаемый формат")
|
109
109
|
|
110
|
-
def В_метку_времени(
|
111
|
-
return
|
110
|
+
def В_метку_времени(экземпляр):
|
111
|
+
return экземпляр._дата_время.timestamp()
|
112
112
|
|
113
|
-
def День_недели(
|
114
|
-
return
|
113
|
+
def День_недели(экземпляр):
|
114
|
+
return экземпляр._дата_время.weekday()
|
115
115
|
|
116
|
-
def Номер_дня_недели(
|
117
|
-
return
|
116
|
+
def Номер_дня_недели(экземпляр):
|
117
|
+
return экземпляр._дата_время.isoweekday()
|
118
118
|
|
119
|
-
def Добавить(
|
120
|
-
return Дата_и_время(
|
119
|
+
def Добавить(экземпляр, интервал):
|
120
|
+
return Дата_и_время(экземпляр._дата_время + интервал._интервал)
|
121
121
|
|
122
|
-
def Вычесть(
|
123
|
-
return Дата_и_время(
|
122
|
+
def Вычесть(экземпляр, интервал):
|
123
|
+
return Дата_и_время(экземпляр._дата_время - интервал._интервал)
|
124
124
|
|
125
|
-
def __add__(
|
125
|
+
def __add__(экземпляр, другой):
|
126
126
|
if isinstance(другой, Интервал):
|
127
|
-
return
|
127
|
+
return экземпляр.Добавить(другой)
|
128
128
|
return NotImplemented
|
129
129
|
|
130
|
-
def __radd__(
|
130
|
+
def __radd__(экземпляр, другой):
|
131
131
|
if isinstance(другой, Интервал):
|
132
|
-
return
|
132
|
+
return экземпляр.Добавить(другой)
|
133
133
|
return NotImplemented
|
134
134
|
|
135
|
-
def __sub__(
|
135
|
+
def __sub__(экземпляр, другой):
|
136
136
|
if isinstance(другой, Интервал):
|
137
|
-
return
|
137
|
+
return экземпляр.Вычесть(другой)
|
138
138
|
return NotImplemented
|
139
139
|
|
140
|
-
def __eq__(
|
140
|
+
def __eq__(экземпляр, другой):
|
141
141
|
if isinstance(другой, Дата_и_время):
|
142
|
-
return
|
142
|
+
return экземпляр._дата_время == другой._дата_время
|
143
143
|
return NotImplemented
|
144
144
|
|
145
|
-
def __lt__(
|
145
|
+
def __lt__(экземпляр, другой):
|
146
146
|
if isinstance(другой, Дата_и_время):
|
147
|
-
return
|
147
|
+
return экземпляр._дата_время < другой._дата_время
|
148
148
|
return NotImplemented
|
149
149
|
|
150
|
-
def __le__(
|
150
|
+
def __le__(экземпляр, другой):
|
151
151
|
if isinstance(другой, Дата_и_время):
|
152
|
-
return
|
152
|
+
return экземпляр._дата_время <= другой._дата_время
|
153
153
|
return NotImplemented
|
154
154
|
|
155
|
-
def __gt__(
|
155
|
+
def __gt__(экземпляр, другой):
|
156
156
|
if isinstance(другой, Дата_и_время):
|
157
|
-
return
|
157
|
+
return экземпляр._дата_время > другой._дата_время
|
158
158
|
return NotImplemented
|
159
159
|
|
160
|
-
def __ge__(
|
160
|
+
def __ge__(экземпляр, другой):
|
161
161
|
if isinstance(другой, Дата_и_время):
|
162
|
-
return
|
162
|
+
return экземпляр._дата_время >= другой._дата_время
|
163
163
|
return NotImplemented
|
164
164
|
|
165
|
+
def __format__(экземпляр, формат):
|
166
|
+
return экземпляр.В_формат(формат)
|
167
|
+
|
165
168
|
@property
|
166
|
-
def Год(
|
167
|
-
return
|
169
|
+
def Год(экземпляр):
|
170
|
+
return экземпляр._дата_время.year
|
168
171
|
|
169
172
|
@property
|
170
|
-
def Месяц(
|
171
|
-
return
|
173
|
+
def Месяц(экземпляр):
|
174
|
+
return экземпляр._дата_время.month
|
172
175
|
|
173
176
|
@property
|
174
|
-
def День(
|
175
|
-
return
|
177
|
+
def День(экземпляр):
|
178
|
+
return экземпляр._дата_время.day
|
176
179
|
|
177
180
|
@property
|
178
|
-
def Часов(
|
179
|
-
return
|
181
|
+
def Часов(экземпляр):
|
182
|
+
return экземпляр._дата_время.hour
|
180
183
|
|
181
184
|
@property
|
182
|
-
def Минут(
|
183
|
-
return
|
185
|
+
def Минут(экземпляр):
|
186
|
+
return экземпляр._дата_время.minute
|
184
187
|
|
185
188
|
@property
|
186
|
-
def Секунд(
|
187
|
-
return
|
189
|
+
def Секунд(экземпляр):
|
190
|
+
return экземпляр._дата_время.second
|
188
191
|
|
189
192
|
@property
|
190
|
-
def Микросекунд(
|
191
|
-
return
|
193
|
+
def Микросекунд(экземпляр):
|
194
|
+
return экземпляр._дата_время.microsecond
|
192
195
|
|
193
196
|
@property
|
194
|
-
def Часовой_пояс(
|
195
|
-
return
|
197
|
+
def Часовой_пояс(экземпляр):
|
198
|
+
return экземпляр._дата_время.tzinfo
|
196
199
|
|
197
200
|
class Дата:
|
198
|
-
def __init__(
|
199
|
-
if len(ПА) > 0 and type(ПА[0]) == datetime.date:
|
201
|
+
def __init__(экземпляр, *ПА, **ИА):
|
202
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.date: экземпляр._дата = ПА[0]
|
200
203
|
else:
|
201
204
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
202
205
|
ИА, Словарь_параметров
|
203
206
|
)
|
204
|
-
|
207
|
+
экземпляр._дата = datetime.date(*ПА, **ИА)
|
205
208
|
|
206
209
|
@staticmethod
|
207
210
|
def Сегодня():
|
@@ -211,186 +214,196 @@ class Дата:
|
|
211
214
|
def От_даты(порядковый_номер):
|
212
215
|
return Дата(datetime.date.fromordinal(порядковый_номер))
|
213
216
|
|
214
|
-
def В_формат(
|
217
|
+
def В_формат(экземпляр, формат):
|
215
218
|
формат = Перевести_формат(формат)
|
216
|
-
return
|
219
|
+
return экземпляр._дата.strftime(формат)
|
217
220
|
|
218
|
-
def __str__(
|
221
|
+
def __str__(экземпляр):
|
219
222
|
формат = Перевести_формат(Формат_даты)
|
220
|
-
return
|
223
|
+
return экземпляр._дата.strftime(формат)
|
221
224
|
|
222
225
|
def Из_строки(строка):
|
223
|
-
return
|
226
|
+
return Дата(Дата_и_время.Разобрать(строка, Формат_времени)._дата_время.time())
|
224
227
|
|
225
|
-
def День_недели(
|
226
|
-
return
|
228
|
+
def День_недели(экземпляр):
|
229
|
+
return экземпляр._дата.isoweekday()
|
227
230
|
|
228
|
-
def Добавить(
|
229
|
-
return Дата(
|
231
|
+
def Добавить(экземпляр, интервал):
|
232
|
+
return Дата(экземпляр._дата + интервал._интервал)
|
230
233
|
|
231
|
-
def Вычесть(
|
232
|
-
return Дата(
|
234
|
+
def Вычесть(экземпляр, интервал):
|
235
|
+
return Дата(экземпляр._дата - интервал._интервал)
|
233
236
|
|
234
|
-
def __add__(
|
237
|
+
def __add__(экземпляр, другой):
|
235
238
|
if isinstance(другой, Интервал):
|
236
|
-
return
|
239
|
+
return экземпляр.Добавить(другой)
|
237
240
|
return NotImplemented
|
238
241
|
|
239
|
-
def __radd__(
|
242
|
+
def __radd__(экземпляр, другой):
|
240
243
|
if isinstance(другой, Интервал):
|
241
|
-
return
|
244
|
+
return экземпляр.Добавить(другой)
|
242
245
|
return NotImplemented
|
243
246
|
|
244
|
-
def __sub__(
|
247
|
+
def __sub__(экземпляр, другой):
|
245
248
|
if isinstance(другой, Интервал):
|
246
|
-
return
|
249
|
+
return экземпляр.Вычесть(другой)
|
247
250
|
return NotImplemented
|
248
251
|
|
249
|
-
def __eq__(
|
252
|
+
def __eq__(экземпляр, другой):
|
250
253
|
if isinstance(другой, Дата):
|
251
|
-
return
|
254
|
+
return экземпляр._дата == другой._дата
|
252
255
|
return NotImplemented
|
253
256
|
|
254
|
-
def __lt__(
|
257
|
+
def __lt__(экземпляр, другой):
|
255
258
|
if isinstance(другой, Дата):
|
256
|
-
return
|
259
|
+
return экземпляр._дата < другой._дата
|
257
260
|
return NotImplemented
|
258
261
|
|
259
|
-
def __le__(
|
262
|
+
def __le__(экземпляр, другой):
|
260
263
|
if isinstance(другой, Дата):
|
261
|
-
return
|
264
|
+
return экземпляр._дата <= другой._дата
|
262
265
|
return NotImplemented
|
263
266
|
|
264
|
-
def __gt__(
|
267
|
+
def __gt__(экземпляр, другой):
|
265
268
|
if isinstance(другой, Дата):
|
266
|
-
return
|
269
|
+
return экземпляр._дата > другой._дата
|
267
270
|
return NotImplemented
|
268
271
|
|
269
|
-
def __ge__(
|
272
|
+
def __ge__(экземпляр, другой):
|
270
273
|
if isinstance(другой, Дата):
|
271
|
-
return
|
274
|
+
return экземпляр._дата >= другой._дата
|
272
275
|
return NotImplemented
|
273
276
|
|
277
|
+
def __format__(экземпляр, формат):
|
278
|
+
return экземпляр.В_формат(формат)
|
279
|
+
|
274
280
|
@property
|
275
|
-
def год(
|
281
|
+
def год(экземпляр): return экземпляр._дата.year
|
276
282
|
|
277
283
|
@property
|
278
|
-
def месяц(
|
284
|
+
def месяц(экземпляр): return экземпляр._дата.month
|
279
285
|
|
280
286
|
@property
|
281
|
-
def день(
|
287
|
+
def день(экземпляр): return экземпляр._дата.day
|
282
288
|
|
283
289
|
class Время:
|
284
|
-
def __init__(
|
290
|
+
def __init__(экземпляр, *ПА, **ИА):
|
285
291
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
286
292
|
ИА, Словарь_параметров
|
287
293
|
)
|
288
|
-
|
294
|
+
экземпляр._время = datetime.time(*ПА, **ИА)
|
289
295
|
|
290
|
-
|
296
|
+
@staticmethod
|
297
|
+
def Сейчас(часовой_пояс=None):
|
298
|
+
return Время(datetime.datetime.now(часовой_пояс).time())
|
299
|
+
|
300
|
+
def В_формат(экземпляр, формат):
|
291
301
|
формат = Перевести_формат(формат)
|
292
|
-
return
|
302
|
+
return экземпляр._время.strftime(формат)
|
293
303
|
|
294
|
-
def __str__(
|
304
|
+
def __str__(экземпляр):
|
295
305
|
формат = Перевести_формат(Формат_времени)
|
296
|
-
return
|
306
|
+
return экземпляр._время.strftime(формат)
|
297
307
|
|
298
|
-
def Заменить(
|
308
|
+
def Заменить(экземпляр, **ИА):
|
299
309
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
300
310
|
ИА, Словарь_параметров
|
301
311
|
)
|
302
|
-
return Время(
|
312
|
+
return Время(экземпляр._время.replace(**ИА))
|
303
313
|
|
304
|
-
def Добавить(
|
305
|
-
базовая_дата = datetime.datetime(1970, 1, 1,
|
314
|
+
def Добавить(экземпляр, интервал):
|
315
|
+
базовая_дата = datetime.datetime(1970, 1, 1, экземпляр._время.hour, экземпляр._время.minute, экземпляр._время.second, экземпляр._время.microsecond, экземпляр._время.tzinfo)
|
306
316
|
результат = базовая_дата + интервал._интервал
|
307
|
-
return Время(результат.hour, результат.minute, результат.second, результат.microsecond,
|
317
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, экземпляр._время.tzinfo)
|
308
318
|
|
309
|
-
def Вычесть(
|
310
|
-
базовая_дата = datetime.datetime(1970, 1, 1,
|
319
|
+
def Вычесть(экземпляр, интервал):
|
320
|
+
базовая_дата = datetime.datetime(1970, 1, 1, экземпляр._время.hour, экземпляр._время.minute, экземпляр._время.second, экземпляр._время.microsecond, экземпляр._время.tzinfo)
|
311
321
|
результат = базовая_дата - интервал._интервал
|
312
|
-
return Время(результат.hour, результат.minute, результат.second, результат.microsecond,
|
322
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, экземпляр._время.tzinfo)
|
313
323
|
|
314
|
-
def __add__(
|
324
|
+
def __add__(экземпляр, другой):
|
315
325
|
if isinstance(другой, Интервал):
|
316
|
-
return
|
326
|
+
return экземпляр.Добавить(другой)
|
317
327
|
return NotImplemented
|
318
328
|
|
319
|
-
def __radd__(
|
329
|
+
def __radd__(экземпляр, другой):
|
320
330
|
if isinstance(другой, Интервал):
|
321
|
-
return
|
331
|
+
return экземпляр.Добавить(другой)
|
322
332
|
return NotImplemented
|
323
333
|
|
324
|
-
def __sub__(
|
334
|
+
def __sub__(экземпляр, другой):
|
325
335
|
if isinstance(другой, Интервал):
|
326
|
-
return
|
336
|
+
return экземпляр.Вычесть(другой)
|
327
337
|
return NotImplemented
|
328
338
|
|
329
|
-
def __eq__(
|
339
|
+
def __eq__(экземпляр, другой):
|
330
340
|
if isinstance(другой, Время):
|
331
|
-
return
|
341
|
+
return экземпляр._время == другой._время
|
332
342
|
return NotImplemented
|
333
343
|
|
334
|
-
def __lt__(
|
344
|
+
def __lt__(экземпляр, другой):
|
335
345
|
if isinstance(другой, Время):
|
336
|
-
return
|
346
|
+
return экземпляр._время < другой._время
|
337
347
|
return NotImplemented
|
338
348
|
|
339
|
-
def __le__(
|
349
|
+
def __le__(экземпляр, другой):
|
340
350
|
if isinstance(другой, Время):
|
341
|
-
return
|
351
|
+
return экземпляр._время <= другой._время
|
342
352
|
return NotImplemented
|
343
353
|
|
344
|
-
def __gt__(
|
354
|
+
def __gt__(экземпляр, другой):
|
345
355
|
if isinstance(другой, Время):
|
346
|
-
return
|
356
|
+
return экземпляр._время > другой._время
|
347
357
|
return NotImplemented
|
348
358
|
|
349
|
-
def __ge__(
|
359
|
+
def __ge__(экземпляр, другой):
|
350
360
|
if isinstance(другой, Время):
|
351
|
-
return
|
361
|
+
return экземпляр._время >= другой._время
|
352
362
|
return NotImplemented
|
353
363
|
|
364
|
+
def __format__(экземпляр, формат):
|
365
|
+
return экземпляр.В_формат(формат)
|
366
|
+
|
354
367
|
@property
|
355
|
-
def Часов(
|
356
|
-
return
|
368
|
+
def Часов(экземпляр):
|
369
|
+
return экземпляр._время.hour
|
357
370
|
|
358
371
|
@property
|
359
|
-
def Минут(
|
360
|
-
return
|
372
|
+
def Минут(экземпляр):
|
373
|
+
return экземпляр._время.minute
|
361
374
|
|
362
375
|
@property
|
363
|
-
def Секунд(
|
364
|
-
return
|
376
|
+
def Секунд(экземпляр):
|
377
|
+
return экземпляр._время.second
|
365
378
|
|
366
379
|
@property
|
367
|
-
def Микросекунд(
|
368
|
-
return
|
380
|
+
def Микросекунд(экземпляр):
|
381
|
+
return экземпляр._время.microsecond
|
369
382
|
|
370
383
|
@property
|
371
|
-
def Часовой_пояс(
|
372
|
-
return
|
384
|
+
def Часовой_пояс(экземпляр):
|
385
|
+
return экземпляр._время.tzinfo
|
373
386
|
|
374
387
|
class Интервал:
|
375
|
-
def __init__(
|
376
|
-
if len(ПА) > 0 and type(ПА[0]) == datetime.timedelta:
|
388
|
+
def __init__(экземпляр, *ПА, **ИА):
|
389
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.timedelta: экземпляр._интервал = ПА[0]
|
377
390
|
else:
|
378
391
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
379
392
|
ИА, Словарь_параметров_интервала
|
380
393
|
)
|
381
|
-
|
394
|
+
экземпляр._интервал = datetime.timedelta(*ПА, **ИА)
|
382
395
|
|
383
|
-
def Добавить(
|
384
|
-
return Интервал(дней=(
|
396
|
+
def Добавить(экземпляр, другой):
|
397
|
+
return Интервал(дней=(экземпляр._интервал + другой._интервал).days, секунд=(экземпляр._интервал + другой._интервал).seconds, микросекунд=(экземпляр._интервал + другой._интервал).microseconds)
|
385
398
|
|
386
|
-
def Вычесть(
|
387
|
-
return Интервал(дней=(
|
399
|
+
def Вычесть(экземпляр, другой):
|
400
|
+
return Интервал(дней=(экземпляр._интервал - другой._интервал).days, секунд=(экземпляр._интервал - другой._интервал).seconds, микросекунд=(экземпляр._интервал - другой._интервал).microseconds)
|
388
401
|
|
389
|
-
def __str__(
|
402
|
+
def __str__(экземпляр):
|
390
403
|
части = []
|
391
|
-
if
|
392
|
-
части.append(Склонение_после_числительного(
|
393
|
-
секунд =
|
404
|
+
if экземпляр.Дней:
|
405
|
+
части.append(Склонение_после_числительного(экземпляр.Дней, ['день', 'дня', 'дней']))
|
406
|
+
секунд = экземпляр.Секунд
|
394
407
|
if секунд >= 3600:
|
395
408
|
часов = секунд // 3600
|
396
409
|
части.append(Склонение_после_числительного(часов, ['час', 'часа', 'часов']))
|
@@ -422,124 +435,124 @@ class Интервал:
|
|
422
435
|
i += 2
|
423
436
|
return Интервал(**ИА)
|
424
437
|
|
425
|
-
def __add__(
|
438
|
+
def __add__(экземпляр, другой):
|
426
439
|
if isinstance(другой, Интервал):
|
427
|
-
return
|
440
|
+
return экземпляр.Добавить(другой)
|
428
441
|
return NotImplemented
|
429
442
|
|
430
|
-
def __sub__(
|
443
|
+
def __sub__(экземпляр, другой):
|
431
444
|
if isinstance(другой, Интервал):
|
432
|
-
return
|
445
|
+
return экземпляр.Вычесть(другой)
|
433
446
|
return NotImplemented
|
434
447
|
|
435
|
-
def __eq__(
|
448
|
+
def __eq__(экземпляр, другой):
|
436
449
|
if isinstance(другой, Интервал):
|
437
|
-
return
|
450
|
+
return экземпляр._интервал == другой._интервал
|
438
451
|
return NotImplemented
|
439
452
|
|
440
|
-
def __lt__(
|
453
|
+
def __lt__(экземпляр, другой):
|
441
454
|
if isinstance(другой, Интервал):
|
442
|
-
return
|
455
|
+
return экземпляр._интервал < другой._интервал
|
443
456
|
return NotImplemented
|
444
457
|
|
445
|
-
def __le__(
|
458
|
+
def __le__(экземпляр, другой):
|
446
459
|
if isinstance(другой, Интервал):
|
447
|
-
return
|
460
|
+
return экземпляр._интервал <= другой._интервал
|
448
461
|
return NotImplemented
|
449
462
|
|
450
|
-
def __gt__(
|
463
|
+
def __gt__(экземпляр, другой):
|
451
464
|
if isinstance(другой, Интервал):
|
452
|
-
return
|
465
|
+
return экземпляр._интервал > другой._интервал
|
453
466
|
return NotImplemented
|
454
467
|
|
455
|
-
def __ge__(
|
468
|
+
def __ge__(экземпляр, другой):
|
456
469
|
if isinstance(другой, Интервал):
|
457
|
-
return
|
470
|
+
return экземпляр._интервал >= другой._интервал
|
458
471
|
return NotImplemented
|
459
472
|
|
460
473
|
@property
|
461
|
-
def Дней(
|
462
|
-
return
|
474
|
+
def Дней(экземпляр):
|
475
|
+
return экземпляр._интервал.days
|
463
476
|
|
464
477
|
@property
|
465
|
-
def Секунд(
|
466
|
-
return
|
478
|
+
def Секунд(экземпляр):
|
479
|
+
return экземпляр._интервал.seconds
|
467
480
|
|
468
481
|
@property
|
469
|
-
def Микросекунд(
|
470
|
-
return
|
482
|
+
def Микросекунд(экземпляр):
|
483
|
+
return экземпляр._интервал.microseconds
|
471
484
|
|
472
485
|
@property
|
473
|
-
def Всего_секунд(
|
474
|
-
return
|
486
|
+
def Всего_секунд(экземпляр):
|
487
|
+
return экземпляр._интервал.total_seconds()
|
475
488
|
|
476
489
|
def Совместить(дата, время):
|
477
490
|
return Дата_время(datetime.datetime.combine(дата._дата, время._время))
|
478
491
|
|
479
492
|
class ДатаСтСт:
|
480
|
-
def __init__(
|
493
|
+
def __init__(экземпляр, *ПА):
|
481
494
|
if len(ПА) == 3:
|
482
|
-
|
483
|
-
|
495
|
+
экземпляр.год, экземпляр.месяц, экземпляр.день = ПА
|
496
|
+
экземпляр._Посчитать_дни()
|
484
497
|
else:
|
485
498
|
if isinstance(ПА[0], ДатаСтСт):
|
486
|
-
|
499
|
+
экземпляр.в_днях = ПА[0].в_днях
|
487
500
|
else:
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
def _Посчитать_день_недели_и_года(
|
492
|
-
|
493
|
-
if
|
494
|
-
|
495
|
-
(275 *
|
496
|
-
- (((
|
497
|
-
+
|
501
|
+
экземпляр.в_днях = ПА[0]
|
502
|
+
экземпляр._Посчитать_дату()
|
503
|
+
|
504
|
+
def _Посчитать_день_недели_и_года(экземпляр):
|
505
|
+
экземпляр.день_недели = (экземпляр.в_днях - 1) % 7
|
506
|
+
if экземпляр.день_недели == 0: экземпляр.день_недели = 7
|
507
|
+
экземпляр.день_года = (
|
508
|
+
(275 * экземпляр.месяц // 9)
|
509
|
+
- (((экземпляр.месяц + 9) // 12) * (1 + ((экземпляр.год - 4 * (экземпляр.год // 4) + 2) // 3)))
|
510
|
+
+ экземпляр.день
|
498
511
|
- 31
|
499
512
|
)
|
500
513
|
|
501
|
-
def _Посчитать_дни(
|
502
|
-
|
503
|
-
367 *
|
504
|
-
- int((7 * (
|
505
|
-
+ int((275 *
|
506
|
-
+
|
514
|
+
def _Посчитать_дни(экземпляр):
|
515
|
+
экземпляр.в_днях = (
|
516
|
+
367 * экземпляр.год
|
517
|
+
- int((7 * (экземпляр.год + 5001 + int((экземпляр.месяц - 9) / 7))) / 4)
|
518
|
+
+ int((275 * экземпляр.месяц) / 9)
|
519
|
+
+ экземпляр.день
|
507
520
|
+ 8353
|
508
521
|
)
|
509
|
-
|
522
|
+
экземпляр._Посчитать_день_недели_и_года()
|
510
523
|
|
511
|
-
def _Посчитать_дату(
|
512
|
-
a =
|
524
|
+
def _Посчитать_дату(экземпляр):
|
525
|
+
a = экземпляр.в_днях + 1890
|
513
526
|
b = int((a - 122.1) / 365.25)
|
514
527
|
c = int(365.25 * b)
|
515
528
|
d = int((a - c) / 30.6001)
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
def Добавить_дни(
|
522
|
-
|
523
|
-
|
524
|
-
return
|
525
|
-
|
526
|
-
def Разница_в_днях(
|
527
|
-
return
|
528
|
-
|
529
|
-
def Сравнить(
|
530
|
-
if
|
531
|
-
elif
|
529
|
+
экземпляр.день = a - c - int(30.6001 * d)
|
530
|
+
экземпляр.месяц = d - (13 if d > 13 else 1)
|
531
|
+
экземпляр.год = b - (3 if экземпляр.месяц < 3 else 4)
|
532
|
+
экземпляр._Посчитать_день_недели_и_года()
|
533
|
+
|
534
|
+
def Добавить_дни(экземпляр, количество):
|
535
|
+
экземпляр.в_днях += количество
|
536
|
+
экземпляр._Посчитать_дату()
|
537
|
+
return экземпляр
|
538
|
+
|
539
|
+
def Разница_в_днях(экземпляр, другая_дата):
|
540
|
+
return экземпляр.в_днях - другая_дата.в_днях
|
541
|
+
|
542
|
+
def Сравнить(экземпляр, другая_дата):
|
543
|
+
if экземпляр.в_днях < другая_дата.в_днях: return -1
|
544
|
+
elif экземпляр.в_днях > другая_дата.в_днях: return 1
|
532
545
|
else: return 0
|
533
546
|
|
534
|
-
def В_новый_стиль(
|
535
|
-
разница =
|
536
|
-
год_увеличения_разницы =
|
547
|
+
def В_новый_стиль(экземпляр):
|
548
|
+
разница = экземпляр.год // 100 - экземпляр.год // 400 - 2
|
549
|
+
год_увеличения_разницы = экземпляр.год % 100 == 0 and экземпляр.год % 400 != 0
|
537
550
|
if год_увеличения_разницы:
|
538
|
-
if
|
539
|
-
if
|
540
|
-
дата = Дата(
|
551
|
+
if экземпляр.день_года < 60: разница -= 1
|
552
|
+
if экземпляр.день_года == 59 and год_увеличения_разницы:
|
553
|
+
дата = Дата(экземпляр.год, 3, 1) + Интервал(дней = разница)
|
541
554
|
else:
|
542
|
-
дата = Дата(
|
555
|
+
дата = Дата(экземпляр.год, экземпляр.месяц, экземпляр.день)
|
543
556
|
дата += Интервал(дней = разница)
|
544
557
|
return дата
|
545
558
|
|