@lfsoftwares/native-util 0.0.14 → 0.0.17
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.
- package/README.md +1 -1
- package/dist/src/DateUtils/util.dates.js +31 -275
- package/dist/src/DateUtils/util.dates.js.map +1 -1
- package/dist/types/src/DateUtils/util.dates.d.ts +7 -15
- package/dist/types/src/DateUtils/util.dates.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/DateUtils/util.dates.ts +51 -305
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ pnpm i @lfsoftwares/native-util
|
|
|
27
27
|
> If you used a package manager other than npm in step 2, also use it in the command below
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
|
-
npm i expo-clipboard expo-constants expo-crypto expo-device expo-splash-screen
|
|
30
|
+
npm i expo-clipboard expo-constants expo-crypto expo-device expo-splash-screen moment react-native-format-currency
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
## 3. What's included?
|
|
@@ -1,292 +1,48 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { compareAsc, add, format, differenceInMinutes } from 'date-fns';
|
|
3
|
-
import { pt } from 'date-fns/locale';
|
|
1
|
+
import moment from 'moment';
|
|
4
2
|
class RNDateUtils {
|
|
5
|
-
static
|
|
6
|
-
|
|
7
|
-
if (date) {
|
|
8
|
-
const dateString = date.toString();
|
|
9
|
-
if (dateString.length === 10) {
|
|
10
|
-
const dateParts = dateString.split('-');
|
|
11
|
-
return (dateParts[2] +
|
|
12
|
-
'/' +
|
|
13
|
-
dateParts[1] +
|
|
14
|
-
'/' +
|
|
15
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0]));
|
|
16
|
-
}
|
|
17
|
-
else if (Platform.OS === 'ios') {
|
|
18
|
-
const newDate = new Date(date.toString());
|
|
19
|
-
const dateFormated = Intl.DateTimeFormat('pt-BR', {
|
|
20
|
-
dateStyle: 'short',
|
|
21
|
-
timeStyle: 'short',
|
|
22
|
-
}).format(newDate);
|
|
23
|
-
if (shortYear) {
|
|
24
|
-
const onlyDate = dateFormated.split(' ')[0];
|
|
25
|
-
const dateParts = onlyDate.split('/');
|
|
26
|
-
return (dateParts[0] + '/' + dateParts[1] + '/' + dateParts[2].substring(2));
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return dateFormated.split(' ')[0];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return shortYear
|
|
34
|
-
? format(date, 'dd/MM/yy', { locale: pt })
|
|
35
|
-
: format(date, 'dd/MM/yyy', { locale: pt });
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
return '';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
3
|
+
static removeDateTimeZone(canRemove, dateTime) {
|
|
4
|
+
if (!dateTime) {
|
|
43
5
|
return '';
|
|
44
6
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// 2023-02-16T00:00:00.000Z ou 2023-02-16
|
|
48
|
-
if (date && date.includes('-')) {
|
|
49
|
-
if (date.includes('T')) {
|
|
50
|
-
const onlyDate = date.split('T')[0];
|
|
51
|
-
const dateParts = onlyDate.split('-');
|
|
52
|
-
let formatedDate;
|
|
53
|
-
if (dateParts[0].length === 4) {
|
|
54
|
-
formatedDate =
|
|
55
|
-
dateParts[2] +
|
|
56
|
-
'/' +
|
|
57
|
-
dateParts[1] +
|
|
58
|
-
'/' +
|
|
59
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0]);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
formatedDate =
|
|
63
|
-
dateParts[0] +
|
|
64
|
-
'/' +
|
|
65
|
-
dateParts[1] +
|
|
66
|
-
'/' +
|
|
67
|
-
(shortYear ? dateParts[2].substring(2) : dateParts[2]);
|
|
68
|
-
}
|
|
69
|
-
return formatedDate;
|
|
70
|
-
}
|
|
71
|
-
else if (date && date.length === 10) {
|
|
72
|
-
const dateParts = date.split('-');
|
|
73
|
-
return (dateParts[2] +
|
|
74
|
-
'/' +
|
|
75
|
-
dateParts[1] +
|
|
76
|
-
'/' +
|
|
77
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0]));
|
|
78
|
-
}
|
|
7
|
+
if (!canRemove) {
|
|
8
|
+
return dateTime;
|
|
79
9
|
}
|
|
10
|
+
const dateTimeStr = moment(dateTime).toISOString();
|
|
11
|
+
return dateTimeStr.split('.')[0];
|
|
80
12
|
}
|
|
81
|
-
static
|
|
82
|
-
|
|
83
|
-
if (date &&
|
|
84
|
-
date.includes('/') &&
|
|
85
|
-
(date.length === 6 ||
|
|
86
|
-
date.length === 7 ||
|
|
87
|
-
date.length === 8 ||
|
|
88
|
-
date.length === 10)) {
|
|
89
|
-
const dateParts = date.split('/');
|
|
90
|
-
if (dateParts.length === 3) {
|
|
91
|
-
dateParts[0] = dateParts[0].padStart(2, '0');
|
|
92
|
-
dateParts[1] = dateParts[1].padStart(2, '0');
|
|
93
|
-
if (dateParts[2].length === 2) {
|
|
94
|
-
dateParts[2] = '20' + dateParts[2];
|
|
95
|
-
}
|
|
96
|
-
if (dateParts[0].length !== 2 ||
|
|
97
|
-
dateParts[1].length !== 2 ||
|
|
98
|
-
dateParts[2].length !== 4) {
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
const dateValidate = new Date(dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0]);
|
|
102
|
-
const validDate = dateValidate.getTime();
|
|
103
|
-
if (!isNaN(validDate)) {
|
|
104
|
-
return dateParts[0] + '/' + dateParts[1] + '/' + dateParts[2];
|
|
105
|
-
}
|
|
106
|
-
else {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return undefined;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch (e) {
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
13
|
+
static currentDate(shortYear = false) {
|
|
14
|
+
return moment().format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY');
|
|
121
15
|
}
|
|
122
|
-
static
|
|
123
|
-
|
|
124
|
-
return '';
|
|
125
|
-
}
|
|
126
|
-
const dateBR = this.validateDateString(dateTime.split(' ')[0]);
|
|
127
|
-
if (dateBR) {
|
|
128
|
-
const dateParts = dateBR.split('/');
|
|
129
|
-
const onlyTime = dateTime.split(' ')[1];
|
|
130
|
-
return (dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0] + ' ' + onlyTime);
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
return '';
|
|
134
|
-
}
|
|
16
|
+
static currentTime(fullTime = false) {
|
|
17
|
+
return moment().format(fullTime ? 'HH:mm:ss' : 'HH:mm');
|
|
135
18
|
}
|
|
136
|
-
static
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0];
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
return '';
|
|
144
|
-
}
|
|
19
|
+
static currentDateTime(shortYear = false, fullTime = false) {
|
|
20
|
+
let mask = shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY';
|
|
21
|
+
mask += fullTime ? ' HH:mm:ss' : ' HH:mm';
|
|
22
|
+
return moment().format(mask);
|
|
145
23
|
}
|
|
146
|
-
static
|
|
147
|
-
if (date
|
|
148
|
-
|
|
149
|
-
dateParts[2] = dateParts[2].padStart(2, '0');
|
|
150
|
-
dateParts[1] = dateParts[1].padStart(2, '0');
|
|
151
|
-
if (dateParts[0].length === 2) {
|
|
152
|
-
dateParts[0] = '20' + dateParts[0];
|
|
153
|
-
}
|
|
154
|
-
if (shortYear) {
|
|
155
|
-
dateParts[0] = dateParts[0].substring(2);
|
|
156
|
-
}
|
|
157
|
-
return dateParts[2] + '/' + dateParts[1] + '/' + dateParts[0];
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
return undefined;
|
|
24
|
+
static formatDate(date, shortYear = false, removeTimeZone = false) {
|
|
25
|
+
if (!date) {
|
|
26
|
+
return '';
|
|
161
27
|
}
|
|
28
|
+
date = this.removeDateTimeZone(removeTimeZone, date);
|
|
29
|
+
return moment(date).format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY');
|
|
162
30
|
}
|
|
163
|
-
static
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return compareAsc(new Date(initialDate), new Date(endDate));
|
|
167
|
-
}
|
|
168
|
-
static expiredDate(date) {
|
|
169
|
-
if (!date)
|
|
170
|
-
return false;
|
|
171
|
-
if (date.toString().includes('1899'))
|
|
172
|
-
return false;
|
|
173
|
-
const today = this.getCurrentDateText();
|
|
174
|
-
const formatedDate = this.formatJsDateTime(date);
|
|
175
|
-
const compareResult = this.compareDates(formatedDate, today);
|
|
176
|
-
return compareResult < 0;
|
|
177
|
-
}
|
|
178
|
-
static minutesBetween(majorDate, minorDate) {
|
|
179
|
-
majorDate = this.dateTimeStringBRToDateTimeStringUS(majorDate);
|
|
180
|
-
minorDate = this.dateTimeStringBRToDateTimeStringUS(minorDate);
|
|
181
|
-
return differenceInMinutes(new Date(majorDate), new Date(minorDate));
|
|
182
|
-
}
|
|
183
|
-
static getCurrentDateText() {
|
|
184
|
-
return format(new Date(), 'dd/MM/yyyy', {
|
|
185
|
-
locale: pt,
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
static getCurrentDateTimeText() {
|
|
189
|
-
return format(new Date(), 'dd/MM/yyyy HH:mm:ss', {
|
|
190
|
-
locale: pt,
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
static getCurrentDateTimeZoneText() {
|
|
194
|
-
const formatedDate = format(new Date(), 'yyyy-MM-dd', {
|
|
195
|
-
locale: pt,
|
|
196
|
-
});
|
|
197
|
-
const formatedTime = format(new Date(), 'HH:mm:ss', {
|
|
198
|
-
locale: pt,
|
|
199
|
-
});
|
|
200
|
-
const formatedDateTime = formatedDate.concat('T', formatedTime, '.000Z');
|
|
201
|
-
return formatedDateTime;
|
|
202
|
-
}
|
|
203
|
-
static formatDate(date) {
|
|
204
|
-
return format(date, 'dd/MM/yyyy', {
|
|
205
|
-
locale: pt,
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
static getDateFromToday(addMonths) {
|
|
209
|
-
let newDate = new Date();
|
|
210
|
-
if (addMonths) {
|
|
211
|
-
newDate = add(newDate, { months: addMonths });
|
|
31
|
+
static formatTime(dateTime, fullTime = false, removeTimeZone = false) {
|
|
32
|
+
if (!dateTime) {
|
|
33
|
+
return '';
|
|
212
34
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
});
|
|
35
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime);
|
|
36
|
+
return moment(dateTime).format(fullTime ? 'HH:mm:ss' : 'HH:mm');
|
|
216
37
|
}
|
|
217
|
-
static
|
|
218
|
-
|
|
219
|
-
if (date) {
|
|
220
|
-
const dateString = date.toString();
|
|
221
|
-
if (dateString.length === 10) {
|
|
222
|
-
const dateParts = dateString.split('-');
|
|
223
|
-
return (dateParts[2] +
|
|
224
|
-
'/' +
|
|
225
|
-
dateParts[1] +
|
|
226
|
-
'/' +
|
|
227
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0]));
|
|
228
|
-
}
|
|
229
|
-
else if (Platform.OS === 'ios') {
|
|
230
|
-
const newDate = new Date(date.toString().replace('00:00:00.000', '12:00:00.000'));
|
|
231
|
-
let dateFormated = Intl.DateTimeFormat('pt-BR', {
|
|
232
|
-
dateStyle: 'short',
|
|
233
|
-
timeStyle: 'short',
|
|
234
|
-
}).format(newDate);
|
|
235
|
-
if (shortYear) {
|
|
236
|
-
const dateTimeParts = dateFormated.split(' ');
|
|
237
|
-
const onlyDate = dateTimeParts[0];
|
|
238
|
-
const onlyTime = dateTimeParts[1];
|
|
239
|
-
const dateParts = onlyDate.split('/');
|
|
240
|
-
dateFormated =
|
|
241
|
-
dateParts[0] +
|
|
242
|
-
'/' +
|
|
243
|
-
dateParts[1] +
|
|
244
|
-
'/' +
|
|
245
|
-
dateParts[2].substring(2) +
|
|
246
|
-
' ' +
|
|
247
|
-
onlyTime;
|
|
248
|
-
}
|
|
249
|
-
if (putHours) {
|
|
250
|
-
return dateFormated.replace(' ', ' - ');
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
return dateFormated.split(' ')[0];
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
else {
|
|
257
|
-
const newDate = date.toString().replace('00:00:00.000', '12:00:00.000');
|
|
258
|
-
const onlyDate = newDate.includes('T')
|
|
259
|
-
? newDate.split('T')[0]
|
|
260
|
-
: newDate.split(' ')[0];
|
|
261
|
-
const onlyTime = newDate.includes('T')
|
|
262
|
-
? newDate.split('T')[1]
|
|
263
|
-
: newDate.split(' ')[1];
|
|
264
|
-
const fieldsDate = onlyDate.split('-');
|
|
265
|
-
const fieldsTime = onlyTime.split(':');
|
|
266
|
-
const dateFormated = fieldsDate[2] +
|
|
267
|
-
'/' +
|
|
268
|
-
fieldsDate[1] +
|
|
269
|
-
'/' +
|
|
270
|
-
(shortYear ? fieldsDate[0].substring(2) : fieldsDate[0]) +
|
|
271
|
-
' - ' +
|
|
272
|
-
fieldsTime[0] +
|
|
273
|
-
':' +
|
|
274
|
-
fieldsTime[1];
|
|
275
|
-
if (putHours) {
|
|
276
|
-
return dateFormated;
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
return dateFormated.split('-')[0].trim();
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
return '';
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
catch (e) {
|
|
38
|
+
static formatDateTime(dateTime, shortYear = false, fullTime = false, removeTimeZone = false) {
|
|
39
|
+
if (!dateTime) {
|
|
288
40
|
return '';
|
|
289
41
|
}
|
|
42
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime);
|
|
43
|
+
let mask = shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY';
|
|
44
|
+
mask += fullTime ? ' HH:mm:ss' : ' HH:mm';
|
|
45
|
+
return moment(dateTime).format(mask);
|
|
290
46
|
}
|
|
291
47
|
}
|
|
292
48
|
export default RNDateUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.dates.js","sourceRoot":"","sources":["../../../src/DateUtils/util.dates.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"util.dates.js","sourceRoot":"","sources":["../../../src/DateUtils/util.dates.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAE3B,MAAM,WAAW;IACP,MAAM,CAAC,kBAAkB,CAC/B,SAAkB,EAClB,QAAwB;QAExB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,CAAA;SACV;QAED,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,QAAQ,CAAA;SAChB;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QAElD,OAAO,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK;QAClC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK;QACjC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,SAAS,GAAG,KAAK,EAAE,QAAQ,GAAG,KAAK;QACxD,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;QAChD,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;QAEzC,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,UAAU,CACf,IAAoB,EACpB,SAAS,GAAG,KAAK,EACjB,cAAc,GAAG,KAAK;QAEtB,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,EAAE,CAAA;SACV;QAED,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAEpD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,CAAC,UAAU,CACf,QAAwB,EACxB,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,KAAK;QAEtB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,CAAA;SACV;QAED,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAE5D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,QAAwB,EACxB,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,cAAc,GAAG,KAAK;QAEtB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,CAAA;SACV;QAED,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QAE5D,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;QAChD,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;QAEzC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;CACF;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
declare class RNDateUtils {
|
|
2
|
-
static
|
|
3
|
-
static
|
|
4
|
-
static
|
|
5
|
-
static
|
|
6
|
-
static
|
|
7
|
-
static
|
|
8
|
-
static
|
|
9
|
-
static expiredDate(date?: Date): boolean;
|
|
10
|
-
static minutesBetween(majorDate: string, minorDate: string): number;
|
|
11
|
-
static getCurrentDateText(): string;
|
|
12
|
-
static getCurrentDateTimeText(): string;
|
|
13
|
-
static getCurrentDateTimeZoneText(): string;
|
|
14
|
-
static formatDate(date: Date): string;
|
|
15
|
-
static getDateFromToday(addMonths?: number): string;
|
|
16
|
-
static formatJsDateTime(date?: Date, putHours?: boolean, shortYear?: boolean): string;
|
|
2
|
+
private static removeDateTimeZone;
|
|
3
|
+
static currentDate(shortYear?: boolean): string;
|
|
4
|
+
static currentTime(fullTime?: boolean): string;
|
|
5
|
+
static currentDateTime(shortYear?: boolean, fullTime?: boolean): string;
|
|
6
|
+
static formatDate(date?: Date | string, shortYear?: boolean, removeTimeZone?: boolean): string;
|
|
7
|
+
static formatTime(dateTime?: Date | string, fullTime?: boolean, removeTimeZone?: boolean): string;
|
|
8
|
+
static formatDateTime(dateTime?: Date | string, shortYear?: boolean, fullTime?: boolean, removeTimeZone?: boolean): string;
|
|
17
9
|
}
|
|
18
10
|
export default RNDateUtils;
|
|
19
11
|
//# sourceMappingURL=util.dates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.dates.d.ts","sourceRoot":"","sources":["../../../../src/DateUtils/util.dates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.dates.d.ts","sourceRoot":"","sources":["../../../../src/DateUtils/util.dates.ts"],"names":[],"mappings":"AAEA,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiBjC,MAAM,CAAC,WAAW,CAAC,SAAS,UAAQ;IAIpC,MAAM,CAAC,WAAW,CAAC,QAAQ,UAAQ;IAInC,MAAM,CAAC,eAAe,CAAC,SAAS,UAAQ,EAAE,QAAQ,UAAQ;IAO1D,MAAM,CAAC,UAAU,CACf,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,EACpB,SAAS,UAAQ,EACjB,cAAc,UAAQ;IAWxB,MAAM,CAAC,UAAU,CACf,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EACxB,QAAQ,UAAQ,EAChB,cAAc,UAAQ;IAWxB,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,EACxB,SAAS,UAAQ,EACjB,QAAQ,UAAQ,EAChB,cAAc,UAAQ;CAazB;AAED,eAAe,WAAW,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lfsoftwares/native-util",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.17",
|
|
4
4
|
"description": "Utility library for react native",
|
|
5
5
|
"author": "Leandro Fernandes <lfsoftwares.solucoes@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@types/react": "^18.2.22",
|
|
33
|
-
"date-fns": "^2.30.0",
|
|
34
33
|
"expo-clipboard": "~4.3.1",
|
|
35
34
|
"expo-constants": "~14.4.2",
|
|
36
35
|
"expo-crypto": "~12.4.1",
|
|
37
36
|
"expo-device": "~5.4.0",
|
|
38
37
|
"expo-splash-screen": "~0.20.5",
|
|
38
|
+
"moment": "^2.29.4",
|
|
39
39
|
"react": "^18.2.0",
|
|
40
40
|
"react-native": "^0.72.4",
|
|
41
41
|
"react-native-format-currency": "^0.0.3",
|
|
@@ -43,7 +43,6 @@
|
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@types/react": "*",
|
|
46
|
-
"date-fns": "*",
|
|
47
46
|
"expo-clipboard": "*",
|
|
48
47
|
"expo-constants": "*",
|
|
49
48
|
"expo-crypto": "*",
|
|
@@ -1,337 +1,83 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { compareAsc, add, format, differenceInMinutes } from 'date-fns'
|
|
3
|
-
import { pt } from 'date-fns/locale'
|
|
1
|
+
import moment from 'moment'
|
|
4
2
|
|
|
5
3
|
class RNDateUtils {
|
|
6
|
-
static
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (dateString.length === 10) {
|
|
12
|
-
const dateParts = dateString.split('-')
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
dateParts[2] +
|
|
16
|
-
'/' +
|
|
17
|
-
dateParts[1] +
|
|
18
|
-
'/' +
|
|
19
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0])
|
|
20
|
-
)
|
|
21
|
-
} else if (Platform.OS === 'ios') {
|
|
22
|
-
const newDate = new Date(date.toString())
|
|
23
|
-
|
|
24
|
-
const dateFormated = Intl.DateTimeFormat('pt-BR', {
|
|
25
|
-
dateStyle: 'short',
|
|
26
|
-
timeStyle: 'short',
|
|
27
|
-
}).format(newDate)
|
|
28
|
-
|
|
29
|
-
if (shortYear) {
|
|
30
|
-
const onlyDate = dateFormated.split(' ')[0]
|
|
31
|
-
const dateParts = onlyDate.split('/')
|
|
32
|
-
|
|
33
|
-
return (
|
|
34
|
-
dateParts[0] + '/' + dateParts[1] + '/' + dateParts[2].substring(2)
|
|
35
|
-
)
|
|
36
|
-
} else {
|
|
37
|
-
return dateFormated.split(' ')[0]
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
return shortYear
|
|
41
|
-
? format(date, 'dd/MM/yy', { locale: pt })
|
|
42
|
-
: format(date, 'dd/MM/yyy', { locale: pt })
|
|
43
|
-
}
|
|
44
|
-
} else {
|
|
45
|
-
return ''
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
4
|
+
private static removeDateTimeZone(
|
|
5
|
+
canRemove: boolean,
|
|
6
|
+
dateTime?: Date | string,
|
|
7
|
+
) {
|
|
8
|
+
if (!dateTime) {
|
|
48
9
|
return ''
|
|
49
10
|
}
|
|
50
|
-
}
|
|
51
|
-
static formatDateTimeZone(date?: string, shortYear?: boolean) {
|
|
52
|
-
// 2023-02-16T00:00:00.000Z ou 2023-02-16
|
|
53
|
-
if (date && date.includes('-')) {
|
|
54
|
-
if (date.includes('T')) {
|
|
55
|
-
const onlyDate = date.split('T')[0]
|
|
56
|
-
const dateParts = onlyDate.split('-')
|
|
57
11
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (dateParts[0].length === 4) {
|
|
61
|
-
formatedDate =
|
|
62
|
-
dateParts[2] +
|
|
63
|
-
'/' +
|
|
64
|
-
dateParts[1] +
|
|
65
|
-
'/' +
|
|
66
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0])
|
|
67
|
-
} else {
|
|
68
|
-
formatedDate =
|
|
69
|
-
dateParts[0] +
|
|
70
|
-
'/' +
|
|
71
|
-
dateParts[1] +
|
|
72
|
-
'/' +
|
|
73
|
-
(shortYear ? dateParts[2].substring(2) : dateParts[2])
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return formatedDate
|
|
77
|
-
} else if (date && date.length === 10) {
|
|
78
|
-
const dateParts = date.split('-')
|
|
79
|
-
|
|
80
|
-
return (
|
|
81
|
-
dateParts[2] +
|
|
82
|
-
'/' +
|
|
83
|
-
dateParts[1] +
|
|
84
|
-
'/' +
|
|
85
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0])
|
|
86
|
-
)
|
|
87
|
-
}
|
|
12
|
+
if (!canRemove) {
|
|
13
|
+
return dateTime
|
|
88
14
|
}
|
|
89
|
-
}
|
|
90
|
-
static validateDateString(date?: string) {
|
|
91
|
-
try {
|
|
92
|
-
if (
|
|
93
|
-
date &&
|
|
94
|
-
date.includes('/') &&
|
|
95
|
-
(date.length === 6 ||
|
|
96
|
-
date.length === 7 ||
|
|
97
|
-
date.length === 8 ||
|
|
98
|
-
date.length === 10)
|
|
99
|
-
) {
|
|
100
|
-
const dateParts = date.split('/')
|
|
101
|
-
|
|
102
|
-
if (dateParts.length === 3) {
|
|
103
|
-
dateParts[0] = dateParts[0].padStart(2, '0')
|
|
104
|
-
dateParts[1] = dateParts[1].padStart(2, '0')
|
|
105
|
-
|
|
106
|
-
if (dateParts[2].length === 2) {
|
|
107
|
-
dateParts[2] = '20' + dateParts[2]
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
if (
|
|
111
|
-
dateParts[0].length !== 2 ||
|
|
112
|
-
dateParts[1].length !== 2 ||
|
|
113
|
-
dateParts[2].length !== 4
|
|
114
|
-
) {
|
|
115
|
-
return undefined
|
|
116
|
-
}
|
|
117
15
|
|
|
118
|
-
|
|
119
|
-
dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0],
|
|
120
|
-
)
|
|
16
|
+
const dateTimeStr = moment(dateTime).toISOString()
|
|
121
17
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (!isNaN(validDate)) {
|
|
125
|
-
return dateParts[0] + '/' + dateParts[1] + '/' + dateParts[2]
|
|
126
|
-
} else {
|
|
127
|
-
return undefined
|
|
128
|
-
}
|
|
129
|
-
} else {
|
|
130
|
-
return undefined
|
|
131
|
-
}
|
|
132
|
-
} else {
|
|
133
|
-
return undefined
|
|
134
|
-
}
|
|
135
|
-
} catch (e) {
|
|
136
|
-
return undefined
|
|
137
|
-
}
|
|
18
|
+
return dateTimeStr.split('.')[0]
|
|
138
19
|
}
|
|
139
|
-
static dateTimeStringBRToDateTimeStringUS(dateTime?: string) {
|
|
140
|
-
if (!dateTime || dateTime.length !== 19) {
|
|
141
|
-
return ''
|
|
142
|
-
}
|
|
143
20
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (dateBR) {
|
|
147
|
-
const dateParts = dateBR.split('/')
|
|
148
|
-
const onlyTime = dateTime.split(' ')[1]
|
|
149
|
-
|
|
150
|
-
return (
|
|
151
|
-
dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0] + ' ' + onlyTime
|
|
152
|
-
)
|
|
153
|
-
} else {
|
|
154
|
-
return ''
|
|
155
|
-
}
|
|
21
|
+
static currentDate(shortYear = false) {
|
|
22
|
+
return moment().format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY')
|
|
156
23
|
}
|
|
157
|
-
static dateStringBRToDateStringUS(date?: string) {
|
|
158
|
-
const dateBR = this.validateDateString(date)
|
|
159
24
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
return dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0]
|
|
163
|
-
} else {
|
|
164
|
-
return ''
|
|
165
|
-
}
|
|
25
|
+
static currentTime(fullTime = false) {
|
|
26
|
+
return moment().format(fullTime ? 'HH:mm:ss' : 'HH:mm')
|
|
166
27
|
}
|
|
167
|
-
static dateStringUSToDateStringBR(date?: string, shortYear?: boolean) {
|
|
168
|
-
if (date && date.includes('-') && date.length === 10) {
|
|
169
|
-
const dateParts = date.split('-')
|
|
170
28
|
|
|
171
|
-
|
|
172
|
-
|
|
29
|
+
static currentDateTime(shortYear = false, fullTime = false) {
|
|
30
|
+
let mask = shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY'
|
|
31
|
+
mask += fullTime ? ' HH:mm:ss' : ' HH:mm'
|
|
173
32
|
|
|
174
|
-
|
|
175
|
-
dateParts[0] = '20' + dateParts[0]
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (shortYear) {
|
|
179
|
-
dateParts[0] = dateParts[0].substring(2)
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return dateParts[2] + '/' + dateParts[1] + '/' + dateParts[0]
|
|
183
|
-
} else {
|
|
184
|
-
return undefined
|
|
185
|
-
}
|
|
33
|
+
return moment().format(mask)
|
|
186
34
|
}
|
|
187
|
-
static compareDates(initialDate: string, endDate: string) {
|
|
188
|
-
initialDate = this.dateStringBRToDateStringUS(initialDate)
|
|
189
|
-
endDate = this.dateStringBRToDateStringUS(endDate)
|
|
190
35
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (date
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const formatedDate = this.formatJsDateTime(date)
|
|
36
|
+
static formatDate(
|
|
37
|
+
date?: Date | string,
|
|
38
|
+
shortYear = false,
|
|
39
|
+
removeTimeZone = false,
|
|
40
|
+
) {
|
|
41
|
+
if (!date) {
|
|
42
|
+
return ''
|
|
43
|
+
}
|
|
200
44
|
|
|
201
|
-
|
|
45
|
+
date = this.removeDateTimeZone(removeTimeZone, date)
|
|
202
46
|
|
|
203
|
-
return
|
|
47
|
+
return moment(date).format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY')
|
|
204
48
|
}
|
|
205
|
-
static minutesBetween(majorDate: string, minorDate: string) {
|
|
206
|
-
majorDate = this.dateTimeStringBRToDateTimeStringUS(majorDate)
|
|
207
|
-
minorDate = this.dateTimeStringBRToDateTimeStringUS(minorDate)
|
|
208
49
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return format(new Date(), 'dd/MM/yyyy HH:mm:ss', {
|
|
218
|
-
locale: pt,
|
|
219
|
-
})
|
|
220
|
-
}
|
|
221
|
-
static getCurrentDateTimeZoneText() {
|
|
222
|
-
const formatedDate = format(new Date(), 'yyyy-MM-dd', {
|
|
223
|
-
locale: pt,
|
|
224
|
-
})
|
|
225
|
-
|
|
226
|
-
const formatedTime = format(new Date(), 'HH:mm:ss', {
|
|
227
|
-
locale: pt,
|
|
228
|
-
})
|
|
50
|
+
static formatTime(
|
|
51
|
+
dateTime?: Date | string,
|
|
52
|
+
fullTime = false,
|
|
53
|
+
removeTimeZone = false,
|
|
54
|
+
) {
|
|
55
|
+
if (!dateTime) {
|
|
56
|
+
return ''
|
|
57
|
+
}
|
|
229
58
|
|
|
230
|
-
|
|
59
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime)
|
|
231
60
|
|
|
232
|
-
return
|
|
61
|
+
return moment(dateTime).format(fullTime ? 'HH:mm:ss' : 'HH:mm')
|
|
233
62
|
}
|
|
234
|
-
static formatDate(date: Date) {
|
|
235
|
-
return format(date, 'dd/MM/yyyy', {
|
|
236
|
-
locale: pt,
|
|
237
|
-
})
|
|
238
|
-
}
|
|
239
|
-
static getDateFromToday(addMonths?: number) {
|
|
240
|
-
let newDate = new Date()
|
|
241
|
-
|
|
242
|
-
if (addMonths) {
|
|
243
|
-
newDate = add(newDate, { months: addMonths })
|
|
244
|
-
}
|
|
245
63
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
date?: Date,
|
|
252
|
-
putHours?: boolean,
|
|
253
|
-
shortYear?: boolean,
|
|
64
|
+
static formatDateTime(
|
|
65
|
+
dateTime?: Date | string,
|
|
66
|
+
shortYear = false,
|
|
67
|
+
fullTime = false,
|
|
68
|
+
removeTimeZone = false,
|
|
254
69
|
) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
if (dateString.length === 10) {
|
|
260
|
-
const dateParts = dateString.split('-')
|
|
261
|
-
|
|
262
|
-
return (
|
|
263
|
-
dateParts[2] +
|
|
264
|
-
'/' +
|
|
265
|
-
dateParts[1] +
|
|
266
|
-
'/' +
|
|
267
|
-
(shortYear ? dateParts[0].substring(2) : dateParts[0])
|
|
268
|
-
)
|
|
269
|
-
} else if (Platform.OS === 'ios') {
|
|
270
|
-
const newDate = new Date(
|
|
271
|
-
date.toString().replace('00:00:00.000', '12:00:00.000'),
|
|
272
|
-
)
|
|
273
|
-
|
|
274
|
-
let dateFormated = Intl.DateTimeFormat('pt-BR', {
|
|
275
|
-
dateStyle: 'short',
|
|
276
|
-
timeStyle: 'short',
|
|
277
|
-
}).format(newDate)
|
|
278
|
-
|
|
279
|
-
if (shortYear) {
|
|
280
|
-
const dateTimeParts = dateFormated.split(' ')
|
|
281
|
-
const onlyDate = dateTimeParts[0]
|
|
282
|
-
const onlyTime = dateTimeParts[1]
|
|
283
|
-
const dateParts = onlyDate.split('/')
|
|
284
|
-
|
|
285
|
-
dateFormated =
|
|
286
|
-
dateParts[0] +
|
|
287
|
-
'/' +
|
|
288
|
-
dateParts[1] +
|
|
289
|
-
'/' +
|
|
290
|
-
dateParts[2].substring(2) +
|
|
291
|
-
' ' +
|
|
292
|
-
onlyTime
|
|
293
|
-
}
|
|
70
|
+
if (!dateTime) {
|
|
71
|
+
return ''
|
|
72
|
+
}
|
|
294
73
|
|
|
295
|
-
|
|
296
|
-
return dateFormated.replace(' ', ' - ')
|
|
297
|
-
} else {
|
|
298
|
-
return dateFormated.split(' ')[0]
|
|
299
|
-
}
|
|
300
|
-
} else {
|
|
301
|
-
const newDate = date.toString().replace('00:00:00.000', '12:00:00.000')
|
|
302
|
-
const onlyDate = newDate.includes('T')
|
|
303
|
-
? newDate.split('T')[0]
|
|
304
|
-
: newDate.split(' ')[0]
|
|
305
|
-
const onlyTime = newDate.includes('T')
|
|
306
|
-
? newDate.split('T')[1]
|
|
307
|
-
: newDate.split(' ')[1]
|
|
308
|
-
const fieldsDate = onlyDate.split('-')
|
|
309
|
-
const fieldsTime = onlyTime.split(':')
|
|
74
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime)
|
|
310
75
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
'/' +
|
|
314
|
-
fieldsDate[1] +
|
|
315
|
-
'/' +
|
|
316
|
-
(shortYear ? fieldsDate[0].substring(2) : fieldsDate[0]) +
|
|
317
|
-
' - ' +
|
|
318
|
-
fieldsTime[0] +
|
|
319
|
-
':' +
|
|
320
|
-
fieldsTime[1]
|
|
76
|
+
let mask = shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY'
|
|
77
|
+
mask += fullTime ? ' HH:mm:ss' : ' HH:mm'
|
|
321
78
|
|
|
322
|
-
|
|
323
|
-
return dateFormated
|
|
324
|
-
} else {
|
|
325
|
-
return dateFormated.split('-')[0].trim()
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
} else {
|
|
329
|
-
return ''
|
|
330
|
-
}
|
|
331
|
-
} catch (e) {
|
|
332
|
-
return ''
|
|
333
|
-
}
|
|
79
|
+
return moment(dateTime).format(mask)
|
|
334
80
|
}
|
|
335
81
|
}
|
|
336
82
|
|
|
337
|
-
export default RNDateUtils
|
|
83
|
+
export default RNDateUtils
|