@lfsoftwares/native-util 0.0.16 → 0.0.18
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 +44 -271
- package/dist/src/DateUtils/util.dates.js.map +1 -1
- package/dist/types/src/DateUtils/util.dates.d.ts +8 -15
- package/dist/types/src/DateUtils/util.dates.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/DateUtils/util.dates.ts +69 -299
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,65 @@
|
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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');
|
|
15
|
+
}
|
|
16
|
+
static currentTime(fullTime = false) {
|
|
17
|
+
return moment().format(fullTime ? 'HH:mm:ss' : 'HH:mm');
|
|
18
|
+
}
|
|
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);
|
|
121
23
|
}
|
|
122
|
-
static
|
|
123
|
-
if (!
|
|
24
|
+
static formatDate(date, shortYear = false, removeTimeZone = false) {
|
|
25
|
+
if (!date) {
|
|
124
26
|
return '';
|
|
125
27
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
28
|
+
date = this.removeDateTimeZone(removeTimeZone, date);
|
|
29
|
+
return moment(date).format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY');
|
|
30
|
+
}
|
|
31
|
+
static formatTime(dateTime, fullTime = false, removeTimeZone = false) {
|
|
32
|
+
if (!dateTime) {
|
|
133
33
|
return '';
|
|
134
34
|
}
|
|
35
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime);
|
|
36
|
+
return moment(dateTime).format(fullTime ? 'HH:mm:ss' : 'HH:mm');
|
|
135
37
|
}
|
|
136
|
-
static
|
|
137
|
-
|
|
138
|
-
if (dateBR) {
|
|
139
|
-
const dateParts = dateBR.split('/');
|
|
140
|
-
return dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0];
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
38
|
+
static formatDateTime(dateTime, shortYear = false, fullTime = false, removeTimeZone = false) {
|
|
39
|
+
if (!dateTime) {
|
|
143
40
|
return '';
|
|
144
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);
|
|
145
46
|
}
|
|
146
|
-
static
|
|
147
|
-
if (
|
|
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];
|
|
47
|
+
static formatGluedTime(time, fullTime = false) {
|
|
48
|
+
if (!time && time !== 0) {
|
|
49
|
+
return '';
|
|
158
50
|
}
|
|
159
|
-
|
|
160
|
-
|
|
51
|
+
let mask = fullTime ? 'HH:mm:ss' : 'HH:mm';
|
|
52
|
+
let timeStr = String(time);
|
|
53
|
+
if (timeStr.length < 4) {
|
|
54
|
+
timeStr = timeStr.padStart(4, '0');
|
|
161
55
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
initialDate = this.dateStringBRToDateStringUS(initialDate);
|
|
165
|
-
endDate = this.dateStringBRToDateStringUS(endDate);
|
|
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 });
|
|
56
|
+
if (fullTime && timeStr.length < 6) {
|
|
57
|
+
timeStr = timeStr.padStart(6, '0');
|
|
212
58
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
static formatJsDateTime(date, putHours, shortYear) {
|
|
218
|
-
try {
|
|
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) {
|
|
288
|
-
return '';
|
|
59
|
+
else if (!fullTime && timeStr.length > 4) {
|
|
60
|
+
timeStr = timeStr.slice(0, 4);
|
|
289
61
|
}
|
|
62
|
+
return moment(timeStr, mask).format(mask);
|
|
290
63
|
}
|
|
291
64
|
}
|
|
292
65
|
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":"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"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
declare class RNDateUtils {
|
|
2
|
-
static
|
|
3
|
-
static
|
|
4
|
-
static
|
|
5
|
-
static
|
|
6
|
-
static
|
|
7
|
-
static
|
|
8
|
-
static
|
|
9
|
-
static
|
|
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;
|
|
9
|
+
static formatGluedTime(time?: number | string, fullTime?: boolean): string;
|
|
17
10
|
}
|
|
18
11
|
export default RNDateUtils;
|
|
19
12
|
//# 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;IAcxB,MAAM,CAAC,eAAe,CACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EACtB,QAAQ,UAAQ;CAqBnB;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.18",
|
|
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,107 @@
|
|
|
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
15
|
|
|
110
|
-
|
|
111
|
-
dateParts[0].length !== 2 ||
|
|
112
|
-
dateParts[1].length !== 2 ||
|
|
113
|
-
dateParts[2].length !== 4
|
|
114
|
-
) {
|
|
115
|
-
return undefined
|
|
116
|
-
}
|
|
16
|
+
const dateTimeStr = moment(dateTime).toISOString()
|
|
117
17
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
)
|
|
121
|
-
|
|
122
|
-
const validDate = dateValidate.getTime()
|
|
18
|
+
return dateTimeStr.split('.')[0]
|
|
19
|
+
}
|
|
123
20
|
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
}
|
|
21
|
+
static currentDate(shortYear = false) {
|
|
22
|
+
return moment().format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY')
|
|
138
23
|
}
|
|
139
|
-
static dateTimeStringBRToDateTimeStringUS(dateTime?: string) {
|
|
140
|
-
if (!dateTime || dateTime.length !== 19) {
|
|
141
|
-
return ''
|
|
142
|
-
}
|
|
143
24
|
|
|
144
|
-
|
|
25
|
+
static currentTime(fullTime = false) {
|
|
26
|
+
return moment().format(fullTime ? 'HH:mm:ss' : 'HH:mm')
|
|
27
|
+
}
|
|
145
28
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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'
|
|
149
32
|
|
|
150
|
-
|
|
151
|
-
dateParts[2] + '-' + dateParts[1] + '-' + dateParts[0] + ' ' + onlyTime
|
|
152
|
-
)
|
|
153
|
-
} else {
|
|
154
|
-
return ''
|
|
155
|
-
}
|
|
33
|
+
return moment().format(mask)
|
|
156
34
|
}
|
|
157
|
-
static dateStringBRToDateStringUS(date?: string) {
|
|
158
|
-
const dateBR = this.validateDateString(date)
|
|
159
35
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
36
|
+
static formatDate(
|
|
37
|
+
date?: Date | string,
|
|
38
|
+
shortYear = false,
|
|
39
|
+
removeTimeZone = false,
|
|
40
|
+
) {
|
|
41
|
+
if (!date) {
|
|
164
42
|
return ''
|
|
165
43
|
}
|
|
166
|
-
}
|
|
167
|
-
static dateStringUSToDateStringBR(date?: string, shortYear?: boolean) {
|
|
168
|
-
if (date && date.includes('-') && date.length === 10) {
|
|
169
|
-
const dateParts = date.split('-')
|
|
170
44
|
|
|
171
|
-
|
|
172
|
-
dateParts[1] = dateParts[1].padStart(2, '0')
|
|
45
|
+
date = this.removeDateTimeZone(removeTimeZone, date)
|
|
173
46
|
|
|
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
|
-
}
|
|
47
|
+
return moment(date).format(shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY')
|
|
186
48
|
}
|
|
187
|
-
static compareDates(initialDate: string, endDate: string) {
|
|
188
|
-
initialDate = this.dateStringBRToDateStringUS(initialDate)
|
|
189
|
-
endDate = this.dateStringBRToDateStringUS(endDate)
|
|
190
49
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
const formatedDate = this.formatJsDateTime(date)
|
|
50
|
+
static formatTime(
|
|
51
|
+
dateTime?: Date | string,
|
|
52
|
+
fullTime = false,
|
|
53
|
+
removeTimeZone = false,
|
|
54
|
+
) {
|
|
55
|
+
if (!dateTime) {
|
|
56
|
+
return ''
|
|
57
|
+
}
|
|
200
58
|
|
|
201
|
-
|
|
59
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime)
|
|
202
60
|
|
|
203
|
-
return
|
|
61
|
+
return moment(dateTime).format(fullTime ? 'HH:mm:ss' : 'HH:mm')
|
|
204
62
|
}
|
|
205
|
-
static minutesBetween(majorDate: string, minorDate: string) {
|
|
206
|
-
majorDate = this.dateTimeStringBRToDateTimeStringUS(majorDate)
|
|
207
|
-
minorDate = this.dateTimeStringBRToDateTimeStringUS(minorDate)
|
|
208
63
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
locale: pt,
|
|
219
|
-
})
|
|
220
|
-
}
|
|
221
|
-
static getCurrentDateTimeZoneText() {
|
|
222
|
-
const formatedDate = format(new Date(), 'yyyy-MM-dd', {
|
|
223
|
-
locale: pt,
|
|
224
|
-
})
|
|
64
|
+
static formatDateTime(
|
|
65
|
+
dateTime?: Date | string,
|
|
66
|
+
shortYear = false,
|
|
67
|
+
fullTime = false,
|
|
68
|
+
removeTimeZone = false,
|
|
69
|
+
) {
|
|
70
|
+
if (!dateTime) {
|
|
71
|
+
return ''
|
|
72
|
+
}
|
|
225
73
|
|
|
226
|
-
|
|
227
|
-
locale: pt,
|
|
228
|
-
})
|
|
74
|
+
dateTime = this.removeDateTimeZone(removeTimeZone, dateTime)
|
|
229
75
|
|
|
230
|
-
|
|
76
|
+
let mask = shortYear ? 'DD/MM/YY' : 'DD/MM/YYYY'
|
|
77
|
+
mask += fullTime ? ' HH:mm:ss' : ' HH:mm'
|
|
231
78
|
|
|
232
|
-
return
|
|
233
|
-
}
|
|
234
|
-
static formatDate(date: Date) {
|
|
235
|
-
return format(date, 'dd/MM/yyyy', {
|
|
236
|
-
locale: pt,
|
|
237
|
-
})
|
|
79
|
+
return moment(dateTime).format(mask)
|
|
238
80
|
}
|
|
239
|
-
static getDateFromToday(addMonths?: number) {
|
|
240
|
-
let newDate = new Date()
|
|
241
81
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return format(newDate, 'dd/MM/yyyy', {
|
|
247
|
-
locale: pt,
|
|
248
|
-
})
|
|
249
|
-
}
|
|
250
|
-
static formatJsDateTime(
|
|
251
|
-
date?: Date,
|
|
252
|
-
putHours?: boolean,
|
|
253
|
-
shortYear?: boolean,
|
|
82
|
+
static formatGluedTime(
|
|
83
|
+
time?: number | string,
|
|
84
|
+
fullTime = false,
|
|
254
85
|
) {
|
|
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
|
-
}
|
|
86
|
+
if (!time && time !== 0) {
|
|
87
|
+
return ''
|
|
88
|
+
}
|
|
294
89
|
|
|
295
|
-
|
|
296
|
-
|
|
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(':')
|
|
90
|
+
let mask = fullTime ? 'HH:mm:ss' : 'HH:mm'
|
|
91
|
+
let timeStr = String(time)
|
|
310
92
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
fieldsDate[1] +
|
|
315
|
-
'/' +
|
|
316
|
-
(shortYear ? fieldsDate[0].substring(2) : fieldsDate[0]) +
|
|
317
|
-
' - ' +
|
|
318
|
-
fieldsTime[0] +
|
|
319
|
-
':' +
|
|
320
|
-
fieldsTime[1]
|
|
93
|
+
if (timeStr.length < 4) {
|
|
94
|
+
timeStr = timeStr.padStart(4, '0')
|
|
95
|
+
}
|
|
321
96
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
} else {
|
|
329
|
-
return ''
|
|
330
|
-
}
|
|
331
|
-
} catch (e) {
|
|
332
|
-
return ''
|
|
97
|
+
if (fullTime && timeStr.length < 6) {
|
|
98
|
+
timeStr = timeStr.padStart(6, '0')
|
|
99
|
+
} else if (!fullTime && timeStr.length > 4) {
|
|
100
|
+
timeStr = timeStr.slice(0, 4)
|
|
333
101
|
}
|
|
102
|
+
|
|
103
|
+
return moment(timeStr, mask).format(mask)
|
|
334
104
|
}
|
|
335
105
|
}
|
|
336
106
|
|
|
337
|
-
export default RNDateUtils
|
|
107
|
+
export default RNDateUtils
|