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'. */ 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); 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(); }