1
1
export const timestampToString = ( timestamp : number ) => {
2
+
3
+ if ( ! timestamp || Number . isNaN ( timestamp ) ) {
4
+ return "Date invalide" ;
5
+ }
6
+
2
7
const date = new Date ( timestamp ) ;
3
8
const today = new Date ( ) ;
9
+ if ( Number . isNaN ( date . getTime ( ) ) ) {
10
+ return "Date invalide" ;
11
+ }
4
12
5
13
today . setHours ( 0 , 0 , 0 , 0 ) ;
6
14
date . setHours ( 0 , 0 , 0 , 0 ) ;
@@ -13,32 +21,37 @@ export const timestampToString = (timestamp: number) => {
13
21
date . getDate ( ) - today . getDate ( ) ,
14
22
] ;
15
23
16
- let yearDifference = Math . trunc (
17
- dateDifference [ 0 ] + dateDifference [ 1 ] / 12 + dateDifference [ 2 ] / 365
18
- ) ;
19
-
20
- let monthDifference = Math . trunc (
21
- dateDifference [ 0 ] * 12 + dateDifference [ 1 ] + dateDifference [ 2 ] / 30.4
22
- ) ;
24
+ let yearDifference = dateDifference [ 0 ] ;
25
+ if ( dateDifference [ 1 ] < 0 || ( dateDifference [ 1 ] === 0 && dateDifference [ 2 ] < 0 ) ) {
26
+ yearDifference -- ;
27
+ } else if ( dateDifference [ 1 ] > 0 || ( dateDifference [ 1 ] === 0 && dateDifference [ 2 ] > 0 ) ) {
28
+ yearDifference ++ ;
29
+ }
30
+ let monthDifference = dateDifference [ 0 ] * 12 + dateDifference [ 1 ] ;
23
31
32
+ if ( dateDifference [ 2 ] < 0 ) {
33
+ monthDifference -- ;
34
+ } else if ( dateDifference [ 2 ] > 0 ) {
35
+ monthDifference ++ ;
36
+ }
24
37
let dayDifference = Math . round (
25
38
( date . getTime ( ) - today . getTime ( ) ) / ( 1000 * 60 * 60 * 24 )
26
39
) ;
27
40
28
- if ( yearDifference <= - 1 ) {
29
- formattedDate = `Il y a ${ 0 - yearDifference } an${
30
- yearDifference < - 1 ? "s" : ""
41
+ if ( yearDifference < 0 ) {
42
+ formattedDate = `Il y a ${ Math . abs ( yearDifference ) } an${
43
+ Math . abs ( yearDifference ) > 1 ? "s" : ""
31
44
} `;
32
- } else if ( yearDifference >= 1 ) {
45
+ } else if ( yearDifference > 0 ) {
33
46
formattedDate = `Dans ${ yearDifference } an${ yearDifference > 1 ? "s" : "" } ` ;
34
47
} else {
35
48
if ( monthDifference < 0 ) {
36
- formattedDate = `Il y a ${ 0 - monthDifference } mois` ;
49
+ formattedDate = `Il y a ${ Math . abs ( monthDifference ) } mois` ;
37
50
} else if ( monthDifference > 0 ) {
38
51
formattedDate = `Dans ${ monthDifference } mois` ;
39
52
} else {
40
53
if ( dayDifference < - 2 ) {
41
- formattedDate = `Il y a ${ 0 - dayDifference } jours` ;
54
+ formattedDate = `Il y a ${ Math . abs ( dayDifference ) } jours` ;
42
55
} else if ( dayDifference === - 2 ) {
43
56
formattedDate = "Avant-hier" ;
44
57
} else if ( dayDifference === - 1 ) {
0 commit comments