nepali 0.5.5__py3-none-any.whl → 1.2.0__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.
- nepali/__init__.py +1 -1
- nepali/char.py +102 -81
- nepali/constants.py +66 -0
- nepali/date_converter.py +334 -0
- nepali/datetime/__init__.py +13 -14
- nepali/datetime/_datetime.py +391 -402
- nepali/datetime/_formatter.py +325 -0
- nepali/datetime/_humanize.py +117 -132
- nepali/datetime/_nepalimonth.py +118 -0
- nepali/datetime/_nepaliweek.py +125 -0
- nepali/datetime/parser/__init__.py +4 -4
- nepali/datetime/parser/_parser.py +59 -50
- nepali/datetime/parser/validators.py +249 -159
- nepali/datetime/utils.py +38 -0
- nepali/exceptions.py +8 -3
- nepali/locations/__init__.py +3 -0
- nepali/locations/_data.py +4271 -0
- nepali/locations/_locations.py +38 -0
- nepali/locations/models.py +104 -0
- nepali/locations/utils.py +54 -0
- nepali/number/__init__.py +19 -0
- nepali/number/_nepalinumber.py +563 -0
- nepali/number/_number.py +53 -0
- nepali/number/utils.py +72 -0
- nepali/phone_number.py +183 -0
- nepali/templatetags/__init__.py +0 -0
- nepali/templatetags/nepalidatetime.py +194 -24
- nepali/templatetags/nepalinumber.py +97 -7
- nepali/tests/test_date_converter.py +148 -0
- nepali/tests/test_datetime.py +275 -29
- nepali/tests/test_humanize.py +78 -7
- nepali/tests/test_locations.py +154 -0
- nepali/tests/test_nepalimonth.py +152 -0
- nepali/tests/test_nepaliweek.py +154 -0
- nepali/tests/test_number.py +3152 -0
- nepali/tests/test_parser.py +82 -69
- nepali/tests/test_phone_number.py +254 -0
- nepali/tests/test_timezone.py +192 -0
- nepali/timezone.py +50 -7
- nepali/utils.py +9 -68
- nepali-1.2.0.dist-info/METADATA +476 -0
- nepali-1.2.0.dist-info/RECORD +46 -0
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/WHEEL +1 -1
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info/licenses}/LICENSE +1 -1
- {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/top_level.txt +0 -0
- nepali/datetime/_converter.py +0 -394
- nepali/datetime/_formarter.py +0 -314
- nepali/datetime.py +0 -1169
- nepali/number.py +0 -51
- nepali-0.5.5.dist-info/METADATA +0 -220
- nepali-0.5.5.dist-info/RECORD +0 -27
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import datetime as pythonDateTime
|
|
2
|
+
|
|
3
|
+
from nepali import number
|
|
4
|
+
from nepali.exceptions import (
|
|
5
|
+
InvalidDateFormatException,
|
|
6
|
+
InvalidNepaliDateTimeObjectException,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
from ._datetime import nepalidate, nepalidatetime
|
|
10
|
+
from ._nepalimonth import nepalimonth
|
|
11
|
+
from ._nepaliweek import nepaliweek
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class NepaliDateTimeFormatter:
|
|
15
|
+
"""
|
|
16
|
+
NepaliDateTimeFormatter: formats nepali datetime to string ( using strftime )
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
# format according to python's datetime with class method
|
|
20
|
+
format_map = {
|
|
21
|
+
"a": "weekdayHalf",
|
|
22
|
+
"A": "weekdayFull",
|
|
23
|
+
"w": "weekdayNumber",
|
|
24
|
+
"d": "day",
|
|
25
|
+
"-d": "day_nonzero",
|
|
26
|
+
"b": "monthFull",
|
|
27
|
+
"B": "monthFull",
|
|
28
|
+
"m": "monthNumber",
|
|
29
|
+
"-m": "monthNumber_nonzero",
|
|
30
|
+
"y": "yearHalf",
|
|
31
|
+
"Y": "yearFull",
|
|
32
|
+
"H": "hour24",
|
|
33
|
+
"-H": "hour24_nonzero",
|
|
34
|
+
"I": "hour12",
|
|
35
|
+
"-I": "hour12_nonzero",
|
|
36
|
+
"p": "ampm",
|
|
37
|
+
"M": "minute",
|
|
38
|
+
"-M": "minute_nonzero",
|
|
39
|
+
"S": "second",
|
|
40
|
+
"-S": "second_nonzero",
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
def __init__(self, datetime_object, devanagari=False):
|
|
44
|
+
# TODO: Change variable npDateTime into snake case: `np_date_time`
|
|
45
|
+
if type(datetime_object) == nepalidatetime:
|
|
46
|
+
self.npDateTime = datetime_object
|
|
47
|
+
elif type(datetime_object) == nepalidate:
|
|
48
|
+
self.npDateTime = datetime_object.to_nepalidatetime()
|
|
49
|
+
elif type(datetime_object) == pythonDateTime.date:
|
|
50
|
+
self.npDateTime = nepalidatetime.from_date(datetime_object)
|
|
51
|
+
elif type(datetime_object) == pythonDateTime.datetime:
|
|
52
|
+
self.npDateTime = nepalidatetime.from_datetime(datetime_object)
|
|
53
|
+
else:
|
|
54
|
+
raise InvalidNepaliDateTimeObjectException(
|
|
55
|
+
"Argument must be instance of nepalidate or nepalidatetime or datetime.datetime or datetime.date"
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
self.devanagari = devanagari
|
|
59
|
+
|
|
60
|
+
def __str__(self):
|
|
61
|
+
return str(self.npDateTime)
|
|
62
|
+
|
|
63
|
+
def get_str(self, format):
|
|
64
|
+
"""generates formatted string"""
|
|
65
|
+
i, n = 0, len(format)
|
|
66
|
+
time_str = []
|
|
67
|
+
try:
|
|
68
|
+
while i < n:
|
|
69
|
+
ch = format[i]
|
|
70
|
+
i += 1
|
|
71
|
+
if ch == "%":
|
|
72
|
+
if i < n:
|
|
73
|
+
ch = format[i]
|
|
74
|
+
|
|
75
|
+
if ch == "%":
|
|
76
|
+
# for % character
|
|
77
|
+
time_str.append("%")
|
|
78
|
+
|
|
79
|
+
elif ch == "-":
|
|
80
|
+
# special mid characters eg. "-" for non zero padded values
|
|
81
|
+
special_ch = ch
|
|
82
|
+
if i + 1 < n:
|
|
83
|
+
i += 1
|
|
84
|
+
ch = format[i]
|
|
85
|
+
time_str.append(
|
|
86
|
+
getattr(self, self.get_format_map(special_ch + ch))
|
|
87
|
+
)
|
|
88
|
+
else:
|
|
89
|
+
# mapping % forwarded character
|
|
90
|
+
time_str.append(getattr(self, self.get_format_map(ch)))
|
|
91
|
+
i += 1
|
|
92
|
+
else:
|
|
93
|
+
time_str.append(ch)
|
|
94
|
+
except InvalidDateFormatException as e:
|
|
95
|
+
raise e
|
|
96
|
+
except Exception:
|
|
97
|
+
raise Exception("Unable to convert NepaliDateTime to str")
|
|
98
|
+
time_str = "".join(time_str)
|
|
99
|
+
|
|
100
|
+
return time_str
|
|
101
|
+
|
|
102
|
+
def get_format_map(self, ch: str) -> str:
|
|
103
|
+
if ch not in self.format_map:
|
|
104
|
+
raise InvalidDateFormatException(f"Invalid Date format %{ch}")
|
|
105
|
+
return self.format_map[ch]
|
|
106
|
+
|
|
107
|
+
@property
|
|
108
|
+
def weekdayHalf(self):
|
|
109
|
+
"""
|
|
110
|
+
%a
|
|
111
|
+
"""
|
|
112
|
+
week = nepaliweek(self.npDateTime.weekday())
|
|
113
|
+
if not self.devanagari:
|
|
114
|
+
return week.abbr
|
|
115
|
+
return week.abbr_ne
|
|
116
|
+
|
|
117
|
+
@property
|
|
118
|
+
def weekdayFull(self):
|
|
119
|
+
"""
|
|
120
|
+
%A
|
|
121
|
+
"""
|
|
122
|
+
week = nepaliweek(self.npDateTime.weekday())
|
|
123
|
+
if not self.devanagari:
|
|
124
|
+
return week.name
|
|
125
|
+
return week.name_ne
|
|
126
|
+
|
|
127
|
+
@property
|
|
128
|
+
def weekdayNumber(self):
|
|
129
|
+
"""
|
|
130
|
+
%w
|
|
131
|
+
"""
|
|
132
|
+
if not self.devanagari:
|
|
133
|
+
return str(self.npDateTime.weekday())
|
|
134
|
+
return number.english_to_nepali(self.npDateTime.weekday())
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def day(self):
|
|
138
|
+
"""
|
|
139
|
+
%d
|
|
140
|
+
"""
|
|
141
|
+
day = str(self.npDateTime.day)
|
|
142
|
+
if len(day) < 2:
|
|
143
|
+
day = "0" + day
|
|
144
|
+
if not self.devanagari:
|
|
145
|
+
return str(day)
|
|
146
|
+
return number.english_to_nepali(day)
|
|
147
|
+
|
|
148
|
+
@property
|
|
149
|
+
def day_nonzero(self):
|
|
150
|
+
"""
|
|
151
|
+
%-D
|
|
152
|
+
"""
|
|
153
|
+
day = str(self.npDateTime.day)
|
|
154
|
+
if not self.devanagari:
|
|
155
|
+
return str(day)
|
|
156
|
+
return number.english_to_nepali(day)
|
|
157
|
+
|
|
158
|
+
@property
|
|
159
|
+
def monthFull(self):
|
|
160
|
+
"""
|
|
161
|
+
%B or %b
|
|
162
|
+
"""
|
|
163
|
+
month = nepalimonth(self.npDateTime.month)
|
|
164
|
+
if not self.devanagari:
|
|
165
|
+
return month.name
|
|
166
|
+
return month.name_ne
|
|
167
|
+
|
|
168
|
+
@property
|
|
169
|
+
def monthNumber(self):
|
|
170
|
+
"""
|
|
171
|
+
%m
|
|
172
|
+
"""
|
|
173
|
+
month = str(self.npDateTime.month)
|
|
174
|
+
if len(month) < 2:
|
|
175
|
+
month = "0" + month
|
|
176
|
+
if not self.devanagari:
|
|
177
|
+
return str(month)
|
|
178
|
+
return number.english_to_nepali(month)
|
|
179
|
+
|
|
180
|
+
@property
|
|
181
|
+
def monthNumber_nonzero(self):
|
|
182
|
+
"""
|
|
183
|
+
%-m
|
|
184
|
+
"""
|
|
185
|
+
month = str(self.npDateTime.month)
|
|
186
|
+
if not self.devanagari:
|
|
187
|
+
return str(month)
|
|
188
|
+
return number.english_to_nepali(month)
|
|
189
|
+
|
|
190
|
+
@property
|
|
191
|
+
def yearHalf(self):
|
|
192
|
+
"""
|
|
193
|
+
%y
|
|
194
|
+
"""
|
|
195
|
+
if not self.devanagari:
|
|
196
|
+
return str(self.npDateTime.year)[2:]
|
|
197
|
+
return number.english_to_nepali(str(self.npDateTime.year)[2:])
|
|
198
|
+
|
|
199
|
+
@property
|
|
200
|
+
def yearFull(self):
|
|
201
|
+
"""
|
|
202
|
+
%Y
|
|
203
|
+
"""
|
|
204
|
+
if not self.devanagari:
|
|
205
|
+
return str(self.npDateTime.year)
|
|
206
|
+
return number.english_to_nepali(self.npDateTime.year)
|
|
207
|
+
|
|
208
|
+
@property
|
|
209
|
+
def hour24(self):
|
|
210
|
+
"""
|
|
211
|
+
%H
|
|
212
|
+
"""
|
|
213
|
+
hour = str(self.npDateTime.hour)
|
|
214
|
+
if len(hour) < 2:
|
|
215
|
+
hour = "0" + hour
|
|
216
|
+
if not self.devanagari:
|
|
217
|
+
return str(hour)
|
|
218
|
+
return number.english_to_nepali(hour)
|
|
219
|
+
|
|
220
|
+
@property
|
|
221
|
+
def hour24_nonzero(self):
|
|
222
|
+
"""
|
|
223
|
+
%-H
|
|
224
|
+
"""
|
|
225
|
+
hour = self.npDateTime.hour
|
|
226
|
+
if not self.devanagari:
|
|
227
|
+
return str(hour)
|
|
228
|
+
return number.english_to_nepali(hour)
|
|
229
|
+
|
|
230
|
+
@property
|
|
231
|
+
def hour12(self):
|
|
232
|
+
"""
|
|
233
|
+
%I
|
|
234
|
+
"""
|
|
235
|
+
hour = self.npDateTime.hour
|
|
236
|
+
if hour > 12:
|
|
237
|
+
hour = hour - 12
|
|
238
|
+
if hour == 0:
|
|
239
|
+
hour = 12
|
|
240
|
+
hour = str(hour)
|
|
241
|
+
if len(hour) < 2:
|
|
242
|
+
hour = "0" + hour
|
|
243
|
+
|
|
244
|
+
if not self.devanagari:
|
|
245
|
+
return str(hour)
|
|
246
|
+
return number.english_to_nepali(hour)
|
|
247
|
+
|
|
248
|
+
@property
|
|
249
|
+
def hour12_nonzero(self):
|
|
250
|
+
"""
|
|
251
|
+
%-I
|
|
252
|
+
"""
|
|
253
|
+
hour = self.npDateTime.hour
|
|
254
|
+
if hour > 12:
|
|
255
|
+
hour = hour - 12
|
|
256
|
+
if hour == 0:
|
|
257
|
+
hour = 12
|
|
258
|
+
hour = str(hour)
|
|
259
|
+
if not self.devanagari:
|
|
260
|
+
return str(hour)
|
|
261
|
+
return number.english_to_nepali(hour)
|
|
262
|
+
|
|
263
|
+
@property
|
|
264
|
+
def ampm(self):
|
|
265
|
+
"""
|
|
266
|
+
%p
|
|
267
|
+
"""
|
|
268
|
+
if not self.devanagari:
|
|
269
|
+
ampm = "AM"
|
|
270
|
+
if self.npDateTime.hour > 12:
|
|
271
|
+
ampm = "PM"
|
|
272
|
+
return str(ampm)
|
|
273
|
+
|
|
274
|
+
ampm = ""
|
|
275
|
+
if self.npDateTime.hour < 12:
|
|
276
|
+
ampm = "शुभप्रभात"
|
|
277
|
+
elif self.npDateTime.hour >= 12 and self.npDateTime.hour < 18:
|
|
278
|
+
ampm = "मध्यान्ह"
|
|
279
|
+
else:
|
|
280
|
+
ampm = "अपरान्ह"
|
|
281
|
+
return str(ampm)
|
|
282
|
+
|
|
283
|
+
@property
|
|
284
|
+
def minute(self):
|
|
285
|
+
"""
|
|
286
|
+
%M
|
|
287
|
+
"""
|
|
288
|
+
minute = str(self.npDateTime.minute)
|
|
289
|
+
if len(minute) < 2:
|
|
290
|
+
minute = "0" + minute
|
|
291
|
+
if not self.devanagari:
|
|
292
|
+
return str(minute)
|
|
293
|
+
return number.english_to_nepali(minute)
|
|
294
|
+
|
|
295
|
+
@property
|
|
296
|
+
def minute_nonzero(self):
|
|
297
|
+
"""
|
|
298
|
+
%-M
|
|
299
|
+
"""
|
|
300
|
+
minute = str(self.npDateTime.minute)
|
|
301
|
+
if not self.devanagari:
|
|
302
|
+
return str(minute)
|
|
303
|
+
return number.english_to_nepali(minute)
|
|
304
|
+
|
|
305
|
+
@property
|
|
306
|
+
def second(self):
|
|
307
|
+
"""
|
|
308
|
+
%S
|
|
309
|
+
"""
|
|
310
|
+
second = str(self.npDateTime.second)
|
|
311
|
+
if len(second) < 2:
|
|
312
|
+
second = "0" + second
|
|
313
|
+
if not self.devanagari:
|
|
314
|
+
return str(second)
|
|
315
|
+
return number.english_to_nepali(second)
|
|
316
|
+
|
|
317
|
+
@property
|
|
318
|
+
def second_nonzero(self):
|
|
319
|
+
"""
|
|
320
|
+
%-S
|
|
321
|
+
"""
|
|
322
|
+
second = str(self.npDateTime.second)
|
|
323
|
+
if not self.devanagari:
|
|
324
|
+
return str(second)
|
|
325
|
+
return number.english_to_nepali(second)
|
nepali/datetime/_humanize.py
CHANGED
|
@@ -1,139 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
from nepali.char import NepaliChar
|
|
1
|
+
from nepali import number
|
|
4
2
|
from nepali.timezone import now
|
|
5
|
-
from nepali.exceptions import InvalidNepaliDateTimeObjectException
|
|
6
|
-
from nepali.utils import to_nepali_timezone
|
|
7
3
|
|
|
8
|
-
from .
|
|
4
|
+
from .utils import to_nepalidatetime
|
|
5
|
+
|
|
9
6
|
|
|
10
7
|
class HumanizeDateTime:
|
|
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
|
-
returns date in nepali characters
|
|
124
|
-
"""
|
|
125
|
-
if not self.format:
|
|
126
|
-
self.format = '%B %d, %Y'
|
|
127
|
-
ndt = nepalidatetime.from_datetime(self.datetime_obj)
|
|
128
|
-
return ndt.strftime(self.format)
|
|
129
|
-
|
|
130
|
-
def __str__(self):
|
|
131
|
-
return self.to_str()
|
|
132
|
-
|
|
133
|
-
def __repr__(self):
|
|
134
|
-
return str(self)
|
|
8
|
+
"""
|
|
9
|
+
HumanizeDate converts NepaliDateTime to nepali human readable form
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
__past_text = "अघि"
|
|
13
|
+
__future_text = "पछि"
|
|
14
|
+
__now_text = "भर्खरै"
|
|
15
|
+
__year_text = "वर्ष"
|
|
16
|
+
__month_text = "महिना"
|
|
17
|
+
__day_text = "दिन"
|
|
18
|
+
__hour_text = "घण्टा"
|
|
19
|
+
__minute_text = "मिनेट"
|
|
20
|
+
__second_text = "सेकेन्ड"
|
|
21
|
+
|
|
22
|
+
def __init__(self, datetime_obj, **kwargs):
|
|
23
|
+
"""
|
|
24
|
+
initializes humanize class
|
|
25
|
+
datetime_obj: python datetime object to be humanized
|
|
26
|
+
threshold (kwargs): threshold to be humanize
|
|
27
|
+
format (kwargs): format to display behind threshold
|
|
28
|
+
"""
|
|
29
|
+
self.datetime_obj = to_nepalidatetime(datetime_obj)
|
|
30
|
+
|
|
31
|
+
self.threshold = kwargs.get("threshold")
|
|
32
|
+
self.format = kwargs.get("format")
|
|
33
|
+
|
|
34
|
+
# seconds after from now to datetime_obj
|
|
35
|
+
self.seconds = 0
|
|
36
|
+
|
|
37
|
+
def __calc_seconds(self):
|
|
38
|
+
"""calculates total seconds from now"""
|
|
39
|
+
current_date_time = now()
|
|
40
|
+
|
|
41
|
+
# TODO (@aj3sh): support datetime - nepalidatetime
|
|
42
|
+
self.seconds = int(
|
|
43
|
+
(current_date_time - self.datetime_obj.to_datetime()).total_seconds()
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
self.interval_tense = self.__past_text
|
|
47
|
+
if self.seconds < 0:
|
|
48
|
+
self.seconds *= -1
|
|
49
|
+
self.interval_tense = self.__future_text
|
|
50
|
+
|
|
51
|
+
return self.seconds
|
|
52
|
+
|
|
53
|
+
def to_str(self):
|
|
54
|
+
"""returns humanize string"""
|
|
55
|
+
seconds = self.__calc_seconds() # calculating seconds
|
|
56
|
+
|
|
57
|
+
if self.threshold is not None and seconds >= self.threshold:
|
|
58
|
+
return self._get_datetime_str().strip()
|
|
59
|
+
|
|
60
|
+
return self._get_humanize_str().strip()
|
|
61
|
+
|
|
62
|
+
def _get_humanize_str(self):
|
|
63
|
+
"""
|
|
64
|
+
returns humanize datetime
|
|
65
|
+
"""
|
|
66
|
+
interval_value = 0
|
|
67
|
+
interval_text = ""
|
|
68
|
+
if self.seconds == 0:
|
|
69
|
+
# now
|
|
70
|
+
return self.__now_text
|
|
71
|
+
|
|
72
|
+
elif self.seconds < 60:
|
|
73
|
+
# seconds
|
|
74
|
+
interval_value = self.seconds
|
|
75
|
+
interval_text = self.__second_text
|
|
76
|
+
|
|
77
|
+
elif self.seconds < 3600:
|
|
78
|
+
# minute
|
|
79
|
+
interval_value = self.seconds // 60
|
|
80
|
+
interval_text = self.__minute_text
|
|
81
|
+
|
|
82
|
+
elif self.seconds < 86400:
|
|
83
|
+
# hour
|
|
84
|
+
interval_value = self.seconds // 3600
|
|
85
|
+
interval_text = self.__hour_text
|
|
86
|
+
|
|
87
|
+
elif self.seconds < 2764800:
|
|
88
|
+
# day
|
|
89
|
+
interval_value = self.seconds // 86400
|
|
90
|
+
interval_text = self.__day_text
|
|
91
|
+
|
|
92
|
+
elif self.seconds < 31622400:
|
|
93
|
+
# month
|
|
94
|
+
interval_value = self.seconds // 2764800
|
|
95
|
+
interval_text = self.__month_text
|
|
96
|
+
|
|
97
|
+
else:
|
|
98
|
+
# year
|
|
99
|
+
interval_value = self.seconds // 31622400
|
|
100
|
+
interval_text = self.__year_text
|
|
101
|
+
|
|
102
|
+
interval_value = number.english_to_nepali(interval_value)
|
|
103
|
+
return (
|
|
104
|
+
str(interval_value) + " " + str(interval_text) + " " + self.interval_tense
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
def _get_datetime_str(self):
|
|
108
|
+
"""
|
|
109
|
+
returns date in nepali characters
|
|
110
|
+
"""
|
|
111
|
+
if not self.format:
|
|
112
|
+
self.format = "%B %d, %Y"
|
|
113
|
+
return self.datetime_obj.strftime_ne(self.format)
|
|
114
|
+
|
|
115
|
+
def __str__(self):
|
|
116
|
+
return self.to_str()
|
|
117
|
+
|
|
118
|
+
def __repr__(self):
|
|
119
|
+
return str(self)
|
|
135
120
|
|
|
136
121
|
|
|
137
122
|
def nepalihumanize(datetime_obj, threshold=None, format=None):
|
|
138
|
-
|
|
139
|
-
|
|
123
|
+
"""returns to humanize nepalidatetime"""
|
|
124
|
+
return HumanizeDateTime(datetime_obj, threshold=threshold, format=format).to_str()
|