aboutsummaryrefslogtreecommitdiff
path: root/src/services/date_utils/date_utils.js
diff options
context:
space:
mode:
authorShpuld Shpludson <shp@cock.li>2019-06-18 20:28:31 +0000
committerShpuld Shpludson <shp@cock.li>2019-06-18 20:28:31 +0000
commit0cfa28a7de7cd08820d91c9cba769423d8ce8c89 (patch)
tree967230faa328d35db7459ad7126ccf5bf3e2ece1 /src/services/date_utils/date_utils.js
parent69eff65130170c0cd8fffda45b952d3bec49c218 (diff)
parent0eed2ccca8a0980c161bb5a52b211c507e0ffef5 (diff)
Merge branch 'feature/polls-attempt-2' into 'develop'
Feature/polls attempt 2 See merge request pleroma/pleroma-fe!826
Diffstat (limited to 'src/services/date_utils/date_utils.js')
-rw-r--r--src/services/date_utils/date_utils.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/services/date_utils/date_utils.js b/src/services/date_utils/date_utils.js
new file mode 100644
index 00000000..32e13bca
--- /dev/null
+++ b/src/services/date_utils/date_utils.js
@@ -0,0 +1,45 @@
+export const SECOND = 1000
+export const MINUTE = 60 * SECOND
+export const HOUR = 60 * MINUTE
+export const DAY = 24 * HOUR
+export const WEEK = 7 * DAY
+export const MONTH = 30 * DAY
+export const YEAR = 365.25 * DAY
+
+export const relativeTime = (date, nowThreshold = 1) => {
+ if (typeof date === 'string') date = Date.parse(date)
+ const round = Date.now() > date ? Math.floor : Math.ceil
+ const d = Math.abs(Date.now() - date)
+ let r = { num: round(d / YEAR), key: 'time.years' }
+ if (d < nowThreshold * SECOND) {
+ r.num = 0
+ r.key = 'time.now'
+ } else if (d < MINUTE) {
+ r.num = round(d / SECOND)
+ r.key = 'time.seconds'
+ } else if (d < HOUR) {
+ r.num = round(d / MINUTE)
+ r.key = 'time.minutes'
+ } else if (d < DAY) {
+ r.num = round(d / HOUR)
+ r.key = 'time.hours'
+ } else if (d < WEEK) {
+ r.num = round(d / DAY)
+ r.key = 'time.days'
+ } else if (d < MONTH) {
+ r.num = round(d / WEEK)
+ r.key = 'time.weeks'
+ } else if (d < YEAR) {
+ r.num = round(d / MONTH)
+ r.key = 'time.months'
+ }
+ // Remove plural form when singular
+ if (r.num === 1) r.key = r.key.slice(0, -1)
+ return r
+}
+
+export const relativeTimeShort = (date, nowThreshold = 1) => {
+ const r = relativeTime(date, nowThreshold)
+ r.key += '_short'
+ return r
+}