aboutsummaryrefslogtreecommitdiff
path: root/src/services/date_utils
diff options
context:
space:
mode:
authorHJ <30-hj@users.noreply.git.pleroma.social>2024-09-18 01:17:05 +0000
committerHJ <30-hj@users.noreply.git.pleroma.social>2024-09-18 01:17:05 +0000
commit537145e93467dbc318995d8f709bd6d2eb8c5985 (patch)
treecbbc8346241a60307707344b56a3fdf29ea13606 /src/services/date_utils
parent8ee51229090ba323ceacf2cb8c6b50f2b1309560 (diff)
parentb14ba1725612ee5ddaa40626c4fcd32212f0cc7f (diff)
Merge branch 'tusooa/date-absolute' into 'develop'
Support displaying time in absolute format See merge request pleroma/pleroma-fe!1938
Diffstat (limited to 'src/services/date_utils')
-rw-r--r--src/services/date_utils/date_utils.js43
1 files changed, 41 insertions, 2 deletions
diff --git a/src/services/date_utils/date_utils.js b/src/services/date_utils/date_utils.js
index ed8e1417..69398c0c 100644
--- a/src/services/date_utils/date_utils.js
+++ b/src/services/date_utils/date_utils.js
@@ -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
+ }
+}