rupython 1.2.12__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/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 +100 -100
- 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 +56 -56
- 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 +212 -212
- 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 +32 -32
- 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 +326 -326
- 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 +82 -82
- 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 +121 -121
- 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 +42 -42
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/METADATA +3 -3
- rupython-1.2.13.dist-info/RECORD +19 -0
- rupython-1.2.12.dist-info/RECORD +0 -19
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/LICENSE +0 -0
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/WHEEL +0 -0
- {rupython-1.2.12.dist-info → rupython-1.2.13.dist-info}/top_level.txt +0 -0
@@ -59,13 +59,13 @@ 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
71
|
def Сейчас(часовой_пояс = None):
|
@@ -84,127 +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
|
165
|
+
def __format__(экземпляр, формат):
|
166
|
+
return экземпляр.В_формат(формат)
|
167
167
|
|
168
168
|
@property
|
169
|
-
def Год(
|
170
|
-
return
|
169
|
+
def Год(экземпляр):
|
170
|
+
return экземпляр._дата_время.year
|
171
171
|
|
172
172
|
@property
|
173
|
-
def Месяц(
|
174
|
-
return
|
173
|
+
def Месяц(экземпляр):
|
174
|
+
return экземпляр._дата_время.month
|
175
175
|
|
176
176
|
@property
|
177
|
-
def День(
|
178
|
-
return
|
177
|
+
def День(экземпляр):
|
178
|
+
return экземпляр._дата_время.day
|
179
179
|
|
180
180
|
@property
|
181
|
-
def Часов(
|
182
|
-
return
|
181
|
+
def Часов(экземпляр):
|
182
|
+
return экземпляр._дата_время.hour
|
183
183
|
|
184
184
|
@property
|
185
|
-
def Минут(
|
186
|
-
return
|
185
|
+
def Минут(экземпляр):
|
186
|
+
return экземпляр._дата_время.minute
|
187
187
|
|
188
188
|
@property
|
189
|
-
def Секунд(
|
190
|
-
return
|
189
|
+
def Секунд(экземпляр):
|
190
|
+
return экземпляр._дата_время.second
|
191
191
|
|
192
192
|
@property
|
193
|
-
def Микросекунд(
|
194
|
-
return
|
193
|
+
def Микросекунд(экземпляр):
|
194
|
+
return экземпляр._дата_время.microsecond
|
195
195
|
|
196
196
|
@property
|
197
|
-
def Часовой_пояс(
|
198
|
-
return
|
197
|
+
def Часовой_пояс(экземпляр):
|
198
|
+
return экземпляр._дата_время.tzinfo
|
199
199
|
|
200
200
|
class Дата:
|
201
|
-
def __init__(
|
202
|
-
if len(ПА) > 0 and type(ПА[0]) == datetime.date:
|
201
|
+
def __init__(экземпляр, *ПА, **ИА):
|
202
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.date: экземпляр._дата = ПА[0]
|
203
203
|
else:
|
204
204
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
205
205
|
ИА, Словарь_параметров
|
206
206
|
)
|
207
|
-
|
207
|
+
экземпляр._дата = datetime.date(*ПА, **ИА)
|
208
208
|
|
209
209
|
@staticmethod
|
210
210
|
def Сегодня():
|
@@ -214,196 +214,196 @@ class Дата:
|
|
214
214
|
def От_даты(порядковый_номер):
|
215
215
|
return Дата(datetime.date.fromordinal(порядковый_номер))
|
216
216
|
|
217
|
-
def В_формат(
|
217
|
+
def В_формат(экземпляр, формат):
|
218
218
|
формат = Перевести_формат(формат)
|
219
|
-
return
|
219
|
+
return экземпляр._дата.strftime(формат)
|
220
220
|
|
221
|
-
def __str__(
|
221
|
+
def __str__(экземпляр):
|
222
222
|
формат = Перевести_формат(Формат_даты)
|
223
|
-
return
|
223
|
+
return экземпляр._дата.strftime(формат)
|
224
224
|
|
225
225
|
def Из_строки(строка):
|
226
226
|
return Дата(Дата_и_время.Разобрать(строка, Формат_времени)._дата_время.time())
|
227
227
|
|
228
|
-
def День_недели(
|
229
|
-
return
|
228
|
+
def День_недели(экземпляр):
|
229
|
+
return экземпляр._дата.isoweekday()
|
230
230
|
|
231
|
-
def Добавить(
|
232
|
-
return Дата(
|
231
|
+
def Добавить(экземпляр, интервал):
|
232
|
+
return Дата(экземпляр._дата + интервал._интервал)
|
233
233
|
|
234
|
-
def Вычесть(
|
235
|
-
return Дата(
|
234
|
+
def Вычесть(экземпляр, интервал):
|
235
|
+
return Дата(экземпляр._дата - интервал._интервал)
|
236
236
|
|
237
|
-
def __add__(
|
237
|
+
def __add__(экземпляр, другой):
|
238
238
|
if isinstance(другой, Интервал):
|
239
|
-
return
|
239
|
+
return экземпляр.Добавить(другой)
|
240
240
|
return NotImplemented
|
241
241
|
|
242
|
-
def __radd__(
|
242
|
+
def __radd__(экземпляр, другой):
|
243
243
|
if isinstance(другой, Интервал):
|
244
|
-
return
|
244
|
+
return экземпляр.Добавить(другой)
|
245
245
|
return NotImplemented
|
246
246
|
|
247
|
-
def __sub__(
|
247
|
+
def __sub__(экземпляр, другой):
|
248
248
|
if isinstance(другой, Интервал):
|
249
|
-
return
|
249
|
+
return экземпляр.Вычесть(другой)
|
250
250
|
return NotImplemented
|
251
251
|
|
252
|
-
def __eq__(
|
252
|
+
def __eq__(экземпляр, другой):
|
253
253
|
if isinstance(другой, Дата):
|
254
|
-
return
|
254
|
+
return экземпляр._дата == другой._дата
|
255
255
|
return NotImplemented
|
256
256
|
|
257
|
-
def __lt__(
|
257
|
+
def __lt__(экземпляр, другой):
|
258
258
|
if isinstance(другой, Дата):
|
259
|
-
return
|
259
|
+
return экземпляр._дата < другой._дата
|
260
260
|
return NotImplemented
|
261
261
|
|
262
|
-
def __le__(
|
262
|
+
def __le__(экземпляр, другой):
|
263
263
|
if isinstance(другой, Дата):
|
264
|
-
return
|
264
|
+
return экземпляр._дата <= другой._дата
|
265
265
|
return NotImplemented
|
266
266
|
|
267
|
-
def __gt__(
|
267
|
+
def __gt__(экземпляр, другой):
|
268
268
|
if isinstance(другой, Дата):
|
269
|
-
return
|
269
|
+
return экземпляр._дата > другой._дата
|
270
270
|
return NotImplemented
|
271
271
|
|
272
|
-
def __ge__(
|
272
|
+
def __ge__(экземпляр, другой):
|
273
273
|
if isinstance(другой, Дата):
|
274
|
-
return
|
274
|
+
return экземпляр._дата >= другой._дата
|
275
275
|
return NotImplemented
|
276
276
|
|
277
|
-
def __format__(
|
278
|
-
return
|
277
|
+
def __format__(экземпляр, формат):
|
278
|
+
return экземпляр.В_формат(формат)
|
279
279
|
|
280
280
|
@property
|
281
|
-
def год(
|
281
|
+
def год(экземпляр): return экземпляр._дата.year
|
282
282
|
|
283
283
|
@property
|
284
|
-
def месяц(
|
284
|
+
def месяц(экземпляр): return экземпляр._дата.month
|
285
285
|
|
286
286
|
@property
|
287
|
-
def день(
|
287
|
+
def день(экземпляр): return экземпляр._дата.day
|
288
288
|
|
289
289
|
class Время:
|
290
|
-
def __init__(
|
290
|
+
def __init__(экземпляр, *ПА, **ИА):
|
291
291
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
292
292
|
ИА, Словарь_параметров
|
293
293
|
)
|
294
|
-
|
294
|
+
экземпляр._время = datetime.time(*ПА, **ИА)
|
295
295
|
|
296
296
|
@staticmethod
|
297
297
|
def Сейчас(часовой_пояс=None):
|
298
298
|
return Время(datetime.datetime.now(часовой_пояс).time())
|
299
299
|
|
300
|
-
def В_формат(
|
300
|
+
def В_формат(экземпляр, формат):
|
301
301
|
формат = Перевести_формат(формат)
|
302
|
-
return
|
302
|
+
return экземпляр._время.strftime(формат)
|
303
303
|
|
304
|
-
def __str__(
|
304
|
+
def __str__(экземпляр):
|
305
305
|
формат = Перевести_формат(Формат_времени)
|
306
|
-
return
|
306
|
+
return экземпляр._время.strftime(формат)
|
307
307
|
|
308
|
-
def Заменить(
|
308
|
+
def Заменить(экземпляр, **ИА):
|
309
309
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
310
310
|
ИА, Словарь_параметров
|
311
311
|
)
|
312
|
-
return Время(
|
312
|
+
return Время(экземпляр._время.replace(**ИА))
|
313
313
|
|
314
|
-
def Добавить(
|
315
|
-
базовая_дата = datetime.datetime(1970, 1, 1,
|
314
|
+
def Добавить(экземпляр, интервал):
|
315
|
+
базовая_дата = datetime.datetime(1970, 1, 1, экземпляр._время.hour, экземпляр._время.minute, экземпляр._время.second, экземпляр._время.microsecond, экземпляр._время.tzinfo)
|
316
316
|
результат = базовая_дата + интервал._интервал
|
317
|
-
return Время(результат.hour, результат.minute, результат.second, результат.microsecond,
|
317
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, экземпляр._время.tzinfo)
|
318
318
|
|
319
|
-
def Вычесть(
|
320
|
-
базовая_дата = datetime.datetime(1970, 1, 1,
|
319
|
+
def Вычесть(экземпляр, интервал):
|
320
|
+
базовая_дата = datetime.datetime(1970, 1, 1, экземпляр._время.hour, экземпляр._время.minute, экземпляр._время.second, экземпляр._время.microsecond, экземпляр._время.tzinfo)
|
321
321
|
результат = базовая_дата - интервал._интервал
|
322
|
-
return Время(результат.hour, результат.minute, результат.second, результат.microsecond,
|
322
|
+
return Время(результат.hour, результат.minute, результат.second, результат.microsecond, экземпляр._время.tzinfo)
|
323
323
|
|
324
|
-
def __add__(
|
324
|
+
def __add__(экземпляр, другой):
|
325
325
|
if isinstance(другой, Интервал):
|
326
|
-
return
|
326
|
+
return экземпляр.Добавить(другой)
|
327
327
|
return NotImplemented
|
328
328
|
|
329
|
-
def __radd__(
|
329
|
+
def __radd__(экземпляр, другой):
|
330
330
|
if isinstance(другой, Интервал):
|
331
|
-
return
|
331
|
+
return экземпляр.Добавить(другой)
|
332
332
|
return NotImplemented
|
333
333
|
|
334
|
-
def __sub__(
|
334
|
+
def __sub__(экземпляр, другой):
|
335
335
|
if isinstance(другой, Интервал):
|
336
|
-
return
|
336
|
+
return экземпляр.Вычесть(другой)
|
337
337
|
return NotImplemented
|
338
338
|
|
339
|
-
def __eq__(
|
339
|
+
def __eq__(экземпляр, другой):
|
340
340
|
if isinstance(другой, Время):
|
341
|
-
return
|
341
|
+
return экземпляр._время == другой._время
|
342
342
|
return NotImplemented
|
343
343
|
|
344
|
-
def __lt__(
|
344
|
+
def __lt__(экземпляр, другой):
|
345
345
|
if isinstance(другой, Время):
|
346
|
-
return
|
346
|
+
return экземпляр._время < другой._время
|
347
347
|
return NotImplemented
|
348
348
|
|
349
|
-
def __le__(
|
349
|
+
def __le__(экземпляр, другой):
|
350
350
|
if isinstance(другой, Время):
|
351
|
-
return
|
351
|
+
return экземпляр._время <= другой._время
|
352
352
|
return NotImplemented
|
353
353
|
|
354
|
-
def __gt__(
|
354
|
+
def __gt__(экземпляр, другой):
|
355
355
|
if isinstance(другой, Время):
|
356
|
-
return
|
356
|
+
return экземпляр._время > другой._время
|
357
357
|
return NotImplemented
|
358
358
|
|
359
|
-
def __ge__(
|
359
|
+
def __ge__(экземпляр, другой):
|
360
360
|
if isinstance(другой, Время):
|
361
|
-
return
|
361
|
+
return экземпляр._время >= другой._время
|
362
362
|
return NotImplemented
|
363
363
|
|
364
|
-
def __format__(
|
365
|
-
return
|
364
|
+
def __format__(экземпляр, формат):
|
365
|
+
return экземпляр.В_формат(формат)
|
366
366
|
|
367
367
|
@property
|
368
|
-
def Часов(
|
369
|
-
return
|
368
|
+
def Часов(экземпляр):
|
369
|
+
return экземпляр._время.hour
|
370
370
|
|
371
371
|
@property
|
372
|
-
def Минут(
|
373
|
-
return
|
372
|
+
def Минут(экземпляр):
|
373
|
+
return экземпляр._время.minute
|
374
374
|
|
375
375
|
@property
|
376
|
-
def Секунд(
|
377
|
-
return
|
376
|
+
def Секунд(экземпляр):
|
377
|
+
return экземпляр._время.second
|
378
378
|
|
379
379
|
@property
|
380
|
-
def Микросекунд(
|
381
|
-
return
|
380
|
+
def Микросекунд(экземпляр):
|
381
|
+
return экземпляр._время.microsecond
|
382
382
|
|
383
383
|
@property
|
384
|
-
def Часовой_пояс(
|
385
|
-
return
|
384
|
+
def Часовой_пояс(экземпляр):
|
385
|
+
return экземпляр._время.tzinfo
|
386
386
|
|
387
387
|
class Интервал:
|
388
|
-
def __init__(
|
389
|
-
if len(ПА) > 0 and type(ПА[0]) == datetime.timedelta:
|
388
|
+
def __init__(экземпляр, *ПА, **ИА):
|
389
|
+
if len(ПА) > 0 and type(ПА[0]) == datetime.timedelta: экземпляр._интервал = ПА[0]
|
390
390
|
else:
|
391
391
|
ИА = __Общие_функции__.Заменить_ключи_в_словаре(
|
392
392
|
ИА, Словарь_параметров_интервала
|
393
393
|
)
|
394
|
-
|
394
|
+
экземпляр._интервал = datetime.timedelta(*ПА, **ИА)
|
395
395
|
|
396
|
-
def Добавить(
|
397
|
-
return Интервал(дней=(
|
396
|
+
def Добавить(экземпляр, другой):
|
397
|
+
return Интервал(дней=(экземпляр._интервал + другой._интервал).days, секунд=(экземпляр._интервал + другой._интервал).seconds, микросекунд=(экземпляр._интервал + другой._интервал).microseconds)
|
398
398
|
|
399
|
-
def Вычесть(
|
400
|
-
return Интервал(дней=(
|
399
|
+
def Вычесть(экземпляр, другой):
|
400
|
+
return Интервал(дней=(экземпляр._интервал - другой._интервал).days, секунд=(экземпляр._интервал - другой._интервал).seconds, микросекунд=(экземпляр._интервал - другой._интервал).microseconds)
|
401
401
|
|
402
|
-
def __str__(
|
402
|
+
def __str__(экземпляр):
|
403
403
|
части = []
|
404
|
-
if
|
405
|
-
части.append(Склонение_после_числительного(
|
406
|
-
секунд =
|
404
|
+
if экземпляр.Дней:
|
405
|
+
части.append(Склонение_после_числительного(экземпляр.Дней, ['день', 'дня', 'дней']))
|
406
|
+
секунд = экземпляр.Секунд
|
407
407
|
if секунд >= 3600:
|
408
408
|
часов = секунд // 3600
|
409
409
|
части.append(Склонение_после_числительного(часов, ['час', 'часа', 'часов']))
|
@@ -435,124 +435,124 @@ class Интервал:
|
|
435
435
|
i += 2
|
436
436
|
return Интервал(**ИА)
|
437
437
|
|
438
|
-
def __add__(
|
438
|
+
def __add__(экземпляр, другой):
|
439
439
|
if isinstance(другой, Интервал):
|
440
|
-
return
|
440
|
+
return экземпляр.Добавить(другой)
|
441
441
|
return NotImplemented
|
442
442
|
|
443
|
-
def __sub__(
|
443
|
+
def __sub__(экземпляр, другой):
|
444
444
|
if isinstance(другой, Интервал):
|
445
|
-
return
|
445
|
+
return экземпляр.Вычесть(другой)
|
446
446
|
return NotImplemented
|
447
447
|
|
448
|
-
def __eq__(
|
448
|
+
def __eq__(экземпляр, другой):
|
449
449
|
if isinstance(другой, Интервал):
|
450
|
-
return
|
450
|
+
return экземпляр._интервал == другой._интервал
|
451
451
|
return NotImplemented
|
452
452
|
|
453
|
-
def __lt__(
|
453
|
+
def __lt__(экземпляр, другой):
|
454
454
|
if isinstance(другой, Интервал):
|
455
|
-
return
|
455
|
+
return экземпляр._интервал < другой._интервал
|
456
456
|
return NotImplemented
|
457
457
|
|
458
|
-
def __le__(
|
458
|
+
def __le__(экземпляр, другой):
|
459
459
|
if isinstance(другой, Интервал):
|
460
|
-
return
|
460
|
+
return экземпляр._интервал <= другой._интервал
|
461
461
|
return NotImplemented
|
462
462
|
|
463
|
-
def __gt__(
|
463
|
+
def __gt__(экземпляр, другой):
|
464
464
|
if isinstance(другой, Интервал):
|
465
|
-
return
|
465
|
+
return экземпляр._интервал > другой._интервал
|
466
466
|
return NotImplemented
|
467
467
|
|
468
|
-
def __ge__(
|
468
|
+
def __ge__(экземпляр, другой):
|
469
469
|
if isinstance(другой, Интервал):
|
470
|
-
return
|
470
|
+
return экземпляр._интервал >= другой._интервал
|
471
471
|
return NotImplemented
|
472
472
|
|
473
473
|
@property
|
474
|
-
def Дней(
|
475
|
-
return
|
474
|
+
def Дней(экземпляр):
|
475
|
+
return экземпляр._интервал.days
|
476
476
|
|
477
477
|
@property
|
478
|
-
def Секунд(
|
479
|
-
return
|
478
|
+
def Секунд(экземпляр):
|
479
|
+
return экземпляр._интервал.seconds
|
480
480
|
|
481
481
|
@property
|
482
|
-
def Микросекунд(
|
483
|
-
return
|
482
|
+
def Микросекунд(экземпляр):
|
483
|
+
return экземпляр._интервал.microseconds
|
484
484
|
|
485
485
|
@property
|
486
|
-
def Всего_секунд(
|
487
|
-
return
|
486
|
+
def Всего_секунд(экземпляр):
|
487
|
+
return экземпляр._интервал.total_seconds()
|
488
488
|
|
489
489
|
def Совместить(дата, время):
|
490
490
|
return Дата_время(datetime.datetime.combine(дата._дата, время._время))
|
491
491
|
|
492
492
|
class ДатаСтСт:
|
493
|
-
def __init__(
|
493
|
+
def __init__(экземпляр, *ПА):
|
494
494
|
if len(ПА) == 3:
|
495
|
-
|
496
|
-
|
495
|
+
экземпляр.год, экземпляр.месяц, экземпляр.день = ПА
|
496
|
+
экземпляр._Посчитать_дни()
|
497
497
|
else:
|
498
498
|
if isinstance(ПА[0], ДатаСтСт):
|
499
|
-
|
499
|
+
экземпляр.в_днях = ПА[0].в_днях
|
500
500
|
else:
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
def _Посчитать_день_недели_и_года(
|
505
|
-
|
506
|
-
if
|
507
|
-
|
508
|
-
(275 *
|
509
|
-
- (((
|
510
|
-
+
|
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
|
+
+ экземпляр.день
|
511
511
|
- 31
|
512
512
|
)
|
513
513
|
|
514
|
-
def _Посчитать_дни(
|
515
|
-
|
516
|
-
367 *
|
517
|
-
- int((7 * (
|
518
|
-
+ int((275 *
|
519
|
-
+
|
514
|
+
def _Посчитать_дни(экземпляр):
|
515
|
+
экземпляр.в_днях = (
|
516
|
+
367 * экземпляр.год
|
517
|
+
- int((7 * (экземпляр.год + 5001 + int((экземпляр.месяц - 9) / 7))) / 4)
|
518
|
+
+ int((275 * экземпляр.месяц) / 9)
|
519
|
+
+ экземпляр.день
|
520
520
|
+ 8353
|
521
521
|
)
|
522
|
-
|
522
|
+
экземпляр._Посчитать_день_недели_и_года()
|
523
523
|
|
524
|
-
def _Посчитать_дату(
|
525
|
-
a =
|
524
|
+
def _Посчитать_дату(экземпляр):
|
525
|
+
a = экземпляр.в_днях + 1890
|
526
526
|
b = int((a - 122.1) / 365.25)
|
527
527
|
c = int(365.25 * b)
|
528
528
|
d = int((a - c) / 30.6001)
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
def Добавить_дни(
|
535
|
-
|
536
|
-
|
537
|
-
return
|
538
|
-
|
539
|
-
def Разница_в_днях(
|
540
|
-
return
|
541
|
-
|
542
|
-
def Сравнить(
|
543
|
-
if
|
544
|
-
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
|
545
545
|
else: return 0
|
546
546
|
|
547
|
-
def В_новый_стиль(
|
548
|
-
разница =
|
549
|
-
год_увеличения_разницы =
|
547
|
+
def В_новый_стиль(экземпляр):
|
548
|
+
разница = экземпляр.год // 100 - экземпляр.год // 400 - 2
|
549
|
+
год_увеличения_разницы = экземпляр.год % 100 == 0 and экземпляр.год % 400 != 0
|
550
550
|
if год_увеличения_разницы:
|
551
|
-
if
|
552
|
-
if
|
553
|
-
дата = Дата(
|
551
|
+
if экземпляр.день_года < 60: разница -= 1
|
552
|
+
if экземпляр.день_года == 59 and год_увеличения_разницы:
|
553
|
+
дата = Дата(экземпляр.год, 3, 1) + Интервал(дней = разница)
|
554
554
|
else:
|
555
|
-
дата = Дата(
|
555
|
+
дата = Дата(экземпляр.год, экземпляр.месяц, экземпляр.день)
|
556
556
|
дата += Интервал(дней = разница)
|
557
557
|
return дата
|
558
558
|
|