diff options
| author | Henry Jameson <me@hjkos.com> | 2019-07-28 13:30:29 +0300 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2019-07-28 13:30:29 +0300 |
| commit | b3aff9bbae77b2fd34b2267ce9196c0ebd3e4691 (patch) | |
| tree | 1219e00b6bfe6784add1578a3bc986c1dbb5f34d /src/services/date_utils/date_utils.js | |
| parent | 7f6f025792dcb3a10c94c8952d0312abd0b46989 (diff) | |
| parent | 4827e4d972f8ee11e606693e24ae4ca21711c6b1 (diff) | |
Merge remote-tracking branch 'upstream/develop' into emoji-selector-update
* upstream/develop: (469 commits)
Feature/add sticker picker
guard more secure routes
guard secure routes by redirecting to root
closest can returns itself as well
find inside status-content div only
try to use the closest a tag as target
Update es.json
Also apply keyword filter to subjects
Remove files I accidentally pushed in
fix issues caused by merges in usersearch on @
Add user search at
fix eslint warnings
remove vue-popperjs
fix moderation menu partially hidden by usercard boundary
migrate popper css
rewrite ModerationTools using v-tooltip
make popover position for status action dropdow relative to parent node
rewrite ExtraButtons using v-tooltip
install v-tooltip
i18n/Update pedantic Japanese translation
...
Diffstat (limited to 'src/services/date_utils/date_utils.js')
| -rw-r--r-- | src/services/date_utils/date_utils.js | 45 |
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 +} |
