Update time.ts to handle very small or negative time differences (#1390)
* Update time.ts to handle very small or negative time differences Right now, posts can appear to be from the future with a negative time difference (i.e. -3s appears). This change defines 'NOW' as less than 5 seconds old, and returns 'now' in that case. It's not clear how localisation is handled - this may need translation. * Add test for 'now' in time/ago(...) Add tests for ago() for right now (i.e. 'now') and 10s ago to ensure the seconds case is still testedzio/stable
parent
6d73ed96e1
commit
775aa87540
|
@ -175,6 +175,7 @@ describe('ago', () => {
|
||||||
1671461038,
|
1671461038,
|
||||||
'04 Dec 1995 00:12:00 GMT',
|
'04 Dec 1995 00:12:00 GMT',
|
||||||
new Date(),
|
new Date(),
|
||||||
|
new Date().setSeconds(new Date().getSeconds() - 10),
|
||||||
new Date().setMinutes(new Date().getMinutes() - 10),
|
new Date().setMinutes(new Date().getMinutes() - 10),
|
||||||
new Date().setHours(new Date().getHours() - 1),
|
new Date().setHours(new Date().getHours() - 1),
|
||||||
new Date().setDate(new Date().getDate() - 1),
|
new Date().setDate(new Date().getDate() - 1),
|
||||||
|
@ -183,7 +184,8 @@ describe('ago', () => {
|
||||||
const outputs = [
|
const outputs = [
|
||||||
new Date(1671461038).toLocaleDateString(),
|
new Date(1671461038).toLocaleDateString(),
|
||||||
new Date('04 Dec 1995 00:12:00 GMT').toLocaleDateString(),
|
new Date('04 Dec 1995 00:12:00 GMT').toLocaleDateString(),
|
||||||
'0s',
|
'now',
|
||||||
|
'10s',
|
||||||
'10m',
|
'10m',
|
||||||
'1h',
|
'1h',
|
||||||
'1d',
|
'1d',
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const NOW = 5
|
||||||
const MINUTE = 60
|
const MINUTE = 60
|
||||||
const HOUR = MINUTE * 60
|
const HOUR = MINUTE * 60
|
||||||
const DAY = HOUR * 24
|
const DAY = HOUR * 24
|
||||||
|
@ -13,7 +14,9 @@ export function ago(date: number | string | Date): string {
|
||||||
ts = date
|
ts = date
|
||||||
}
|
}
|
||||||
const diffSeconds = Math.floor((Date.now() - ts) / 1e3)
|
const diffSeconds = Math.floor((Date.now() - ts) / 1e3)
|
||||||
if (diffSeconds < MINUTE) {
|
if (diffSeconds < NOW) {
|
||||||
|
return `now`
|
||||||
|
} else if (diffSeconds < MINUTE) {
|
||||||
return `${diffSeconds}s`
|
return `${diffSeconds}s`
|
||||||
} else if (diffSeconds < HOUR) {
|
} else if (diffSeconds < HOUR) {
|
||||||
return `${Math.floor(diffSeconds / MINUTE)}m`
|
return `${Math.floor(diffSeconds / MINUTE)}m`
|
||||||
|
|
Loading…
Reference in New Issue