format
This commit is contained in:
@ -1,5 +1,5 @@
|
|||||||
import React, {useEffect, useState, useCallback, useMemo, ReactNode} from 'react';
|
import React, { ReactNode,useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from "react-intl";
|
||||||
|
|
||||||
export interface NoteTimeProps {
|
export interface NoteTimeProps {
|
||||||
from: number;
|
from: number;
|
||||||
@ -25,14 +25,14 @@ const NoteTime: React.FC<NoteTimeProps> = ({ from, fallback }) => {
|
|||||||
const fromDate = new Date(fromTime);
|
const fromDate = new Date(fromTime);
|
||||||
if (fromDate.getFullYear() === currentTime.getFullYear()) {
|
if (fromDate.getFullYear() === currentTime.getFullYear()) {
|
||||||
return fromDate.toLocaleDateString(undefined, {
|
return fromDate.toLocaleDateString(undefined, {
|
||||||
month: 'short',
|
month: "short",
|
||||||
day: 'numeric',
|
day: "numeric",
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return fromDate.toLocaleDateString(undefined, {
|
return fromDate.toLocaleDateString(undefined, {
|
||||||
year: 'numeric',
|
year: "numeric",
|
||||||
month: 'short',
|
month: "short",
|
||||||
day: 'numeric',
|
day: "numeric",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -41,11 +41,12 @@ const NoteTime: React.FC<NoteTimeProps> = ({ from, fallback }) => {
|
|||||||
const [time, setTime] = useState<string | ReactNode>(calcTime(from));
|
const [time, setTime] = useState<string | ReactNode>(calcTime(from));
|
||||||
|
|
||||||
const absoluteTime = useMemo(
|
const absoluteTime = useMemo(
|
||||||
() => new Intl.DateTimeFormat(undefined, {
|
() =>
|
||||||
dateStyle: 'medium',
|
new Intl.DateTimeFormat(undefined, {
|
||||||
timeStyle: 'long',
|
dateStyle: "medium",
|
||||||
|
timeStyle: "long",
|
||||||
}).format(from),
|
}).format(from),
|
||||||
[from]
|
[from],
|
||||||
);
|
);
|
||||||
|
|
||||||
const isoDate = useMemo(() => new Date(from).toISOString(), [from]);
|
const isoDate = useMemo(() => new Date(from).toISOString(), [from]);
|
||||||
@ -53,17 +54,17 @@ const NoteTime: React.FC<NoteTimeProps> = ({ from, fallback }) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const t = setInterval(() => {
|
const t = setInterval(() => {
|
||||||
const newTime = calcTime(from);
|
const newTime = calcTime(from);
|
||||||
setTime(s => s !== newTime ? newTime : s);
|
setTime(s => (s !== newTime ? newTime : s));
|
||||||
}, 60_000); // update every minute
|
}, 60_000); // update every minute
|
||||||
|
|
||||||
return () => clearInterval(t);
|
return () => clearInterval(t);
|
||||||
}, [calcTime, from]);
|
}, [from]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<time dateTime={isoDate} title={absoluteTime}>
|
<time dateTime={isoDate} title={absoluteTime}>
|
||||||
{time || fallback}
|
{time || fallback}
|
||||||
</time>
|
</time>
|
||||||
);
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
export default NoteTime;
|
export default NoteTime;
|
||||||
|
Reference in New Issue
Block a user