Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const months = [
- { long: 'January', short: 'Jan' },
- { long: 'February', short: 'Feb' },
- { long: 'March', short: 'Mar' },
- { long: 'April', short: 'Apr' },
- { long: 'May', short: 'May' },
- { long: 'June', short: 'Jun' },
- { long: 'July', short: 'Jul' },
- { long: 'August', short: 'Aug' },
- { long: 'September', short: 'Sept' },
- { long: 'October', short: 'Oct' },
- { long: 'November', short: 'Nov' },
- { long: 'December', short: 'Dec' }
- ]
- const getTime = date => {
- const hours = date.getHours()
- const minutes = date.getMinutes()
- return {
- years: date.getFullYear(),
- month: months[date.getMonth()].short,
- days: date.getDate(),
- hours: hours === 0 || hours === 12 || hours === 24 ? 12 : hours % 12,
- minutes: minutes < 10 ? '0' + minutes : minutes,
- postfix: hours < 12 ? 'AM' : 'PM'
- }
- }
- export default date => {
- const timeZoneOffset = new Date().getTimezoneOffset() * 60000
- const localDate = new Date(date).getTime() - timeZoneOffset
- const todayDateObject = new Date()
- const dateObject = new Date(localDate)
- let diff = todayDateObject.getTime() - dateObject.getTime()
- const floor = Math.floor
- const second = 1000
- const minute = 60 * second
- const hour = 60 * minute
- const day = 24 * hour
- // const week = 7 * day
- // const month = 31 * day
- const year = 365 * day
- const past = diff > 0
- const afterSuffix = 'later'
- const beforeSuffix = 'ago'
- const messages = {
- second: 'Just now',
- seconds: '%s seconds %s',
- minute: 'One minute %s',
- minutes: '%s minutes %s',
- hour: 'One hour %s',
- hours: '%s hours %s',
- day: 'One day %s',
- days: '%s days %s',
- week: 'One week %s',
- weeks: '%s weeks %s',
- month: 'One month %s',
- months: '%s months %s',
- year: 'One year %s',
- years: '%s years %s'
- }
- diff = diff < 0 ? second - diff : diff
- const { yesterday } = messages
- const { years, month, days, hours, minutes, postfix } = getTime(dateObject)
- const prettyDate =
- diff < 2 * second
- ? messages.second
- : diff < minute
- ? messages.seconds.replace('%s', floor(diff / second))
- : diff < hour
- ? messages.minutes.replace('%s', floor(diff / minute))
- : diff < 2 * hour
- ? messages.hour
- : diff < day
- ? messages.hours.replace('%s', floor(diff / hour))
- : diff < 2 * day && past
- ? `${yesterday}, ${hours}:${minutes} ${postfix}`
- : diff < year
- ? `${month} ${days}, ${hours}:${minutes} ${postfix}`
- : `${month} ${days} ${years}, ${hours}:${minutes} ${postfix}`
- return prettyDate.replace('%s', past ? beforeSuffix : afterSuffix)
- // const prettyDate =
- // diff < 2 * second
- // ? messages.second
- // : diff < minute
- // ? messages.seconds.replace('%s', floor(diff / second))
- // : diff < 2 * minute
- // ? messages.minute
- // : diff < hour
- // ? messages.minutes.replace('%s', floor(diff / minute))
- // : diff < 2 * hour
- // ? messages.hour
- // : diff < day
- // ? messages.hours.replace('%s', floor(diff / hour))
- // : diff < 2 * day
- // ? past
- // ? detailed
- // ? `${messages.yesterday}, ${detailedDate.hours}:${
- // detailedDate.minutes
- // } ${detailedDate.postfix}`
- // : messages.yesterday
- // : messages.tomorrow
- // : diff < 3 * day
- // ? past
- // ? messages.beforeYesterday
- // : messages.afterTomorrow
- // : detailed
- // ? `${detailedDate.month} ${detailedDate.day}, ${detailedDate.hours}:${
- // detailedDate.minutes
- // } ${detailedDate.postfix}`
- // : diff < week
- // ? messages.days.replace('%s', floor(diff / day))
- // : diff < 2 * week
- // ? messages.week
- // : diff < 4 * week
- // ? messages.weeks.replace('%s', floor(diff / week))
- // : diff < 2 * month
- // ? messages.month
- // : diff < year
- // ? messages.months.replace('%s', floor(diff / month))
- // : diff < 2 * year
- // ? messages.year
- // : messages.years.replace('%s', floor(diff / year))
- // return prettyDate.replace('%s', past ? beforeSuffix : afterSuffix)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement