Merge branch 'tusooa/date-absolute' into 'develop'

Support displaying time in absolute format

See merge request pleroma/pleroma-fe!1938
This commit is contained in:
HJ 2024-09-18 01:17:05 +00:00
commit 537145e934
7 changed files with 124 additions and 8 deletions

View file

@ -6,10 +6,13 @@ export const WEEK = 7 * DAY
export const MONTH = 30 * DAY
export const YEAR = 365.25 * DAY
export const relativeTime = (date, nowThreshold = 1) => {
export const relativeTimeMs = (date) => {
if (typeof date === 'string') date = Date.parse(date)
return Math.abs(Date.now() - date)
}
export const relativeTime = (date, nowThreshold = 1) => {
const round = Date.now() > date ? Math.floor : Math.ceil
const d = Math.abs(Date.now() - date)
const d = relativeTimeMs(date)
const r = { num: round(d / YEAR), key: 'time.unit.years' }
if (d < nowThreshold * SECOND) {
r.num = 0
@ -57,3 +60,39 @@ export const secondsToUnit = (unit, amount) => {
case 'days': return (1000 * amount) / DAY
}
}
export const isSameYear = (a, b) => {
return a.getFullYear() === b.getFullYear()
}
export const isSameMonth = (a, b) => {
return a.getFullYear() === b.getFullYear() &&
a.getMonth() === b.getMonth()
}
export const isSameDay = (a, b) => {
return a.getFullYear() === b.getFullYear() &&
a.getMonth() === b.getMonth() &&
a.getDate() === b.getDate()
}
export const durationStrToMs = (str) => {
if (typeof str !== 'string') {
return 0
}
const unit = str.replace(/[0-9,.]+/, '')
const value = str.replace(/[^0-9,.]+/, '')
switch (unit) {
case 'd':
return value * DAY
case 'h':
return value * HOUR
case 'm':
return value * MINUTE
case 's':
return value * SECOND
default:
return 0
}
}