2024-04-26 20:34:16 +00:00
|
|
|
import moment from 'moment';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Given a UTC Date ISO 8601 string (the doc updatedAt string), gives a reader-friendly
|
|
|
|
* relative time to now - e.g. 'yesterday', '2 days ago'.
|
|
|
|
*/
|
2024-04-29 14:54:03 +00:00
|
|
|
export function getTimeFromNow(utcDateISO: string): string
|
|
|
|
/**
|
|
|
|
* Given a unix timestamp (in milliseconds), gives a reader-friendly
|
|
|
|
* relative time to now - e.g. 'yesterday', '2 days ago'.
|
|
|
|
*/
|
|
|
|
export function getTimeFromNow(ms: number): string
|
|
|
|
export function getTimeFromNow(isoOrTimestamp: string|number): string {
|
|
|
|
const time = moment.utc(isoOrTimestamp);
|
2024-04-26 20:34:16 +00:00
|
|
|
const now = moment();
|
|
|
|
const diff = now.diff(time, 's');
|
|
|
|
if (diff < 0 && diff > -60) {
|
|
|
|
// If the time appears to be in the future, but less than a minute
|
|
|
|
// in the future, chalk it up to a difference in time
|
|
|
|
// synchronization and don't claim the resource will be changed in
|
|
|
|
// the future. For larger differences, just report them
|
|
|
|
// literally, there's a more serious problem or lack of
|
|
|
|
// synchronization.
|
|
|
|
return now.fromNow();
|
|
|
|
}
|
|
|
|
return time.fromNow();
|
|
|
|
}
|