Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. const months = [
  2. { long: 'January', short: 'Jan' },
  3. { long: 'February', short: 'Feb' },
  4. { long: 'March', short: 'Mar' },
  5. { long: 'April', short: 'Apr' },
  6. { long: 'May', short: 'May' },
  7. { long: 'June', short: 'Jun' },
  8. { long: 'July', short: 'Jul' },
  9. { long: 'August', short: 'Aug' },
  10. { long: 'September', short: 'Sept' },
  11. { long: 'October', short: 'Oct' },
  12. { long: 'November', short: 'Nov' },
  13. { long: 'December', short: 'Dec' }
  14. ]
  15.  
  16. const getTime = date => {
  17. const hours = date.getHours()
  18. const minutes = date.getMinutes()
  19. return {
  20. years: date.getFullYear(),
  21. month: months[date.getMonth()].short,
  22. days: date.getDate(),
  23. hours: hours === 0 || hours === 12 || hours === 24 ? 12 : hours % 12,
  24. minutes: minutes < 10 ? '0' + minutes : minutes,
  25. postfix: hours < 12 ? 'AM' : 'PM'
  26. }
  27. }
  28.  
  29. export default date => {
  30. const timeZoneOffset = new Date().getTimezoneOffset() * 60000
  31. const localDate = new Date(date).getTime() - timeZoneOffset
  32.  
  33. const todayDateObject = new Date()
  34. const dateObject = new Date(localDate)
  35.  
  36. let diff = todayDateObject.getTime() - dateObject.getTime()
  37.  
  38. const floor = Math.floor
  39. const second = 1000
  40. const minute = 60 * second
  41. const hour = 60 * minute
  42. const day = 24 * hour
  43. // const week = 7 * day
  44. // const month = 31 * day
  45. const year = 365 * day
  46. const past = diff > 0
  47. const afterSuffix = 'later'
  48. const beforeSuffix = 'ago'
  49. const messages = {
  50. second: 'Just now',
  51. seconds: '%s seconds %s',
  52. minute: 'One minute %s',
  53. minutes: '%s minutes %s',
  54. hour: 'One hour %s',
  55. hours: '%s hours %s',
  56. day: 'One day %s',
  57. days: '%s days %s',
  58. week: 'One week %s',
  59. weeks: '%s weeks %s',
  60. month: 'One month %s',
  61. months: '%s months %s',
  62. year: 'One year %s',
  63. years: '%s years %s'
  64. }
  65.  
  66. diff = diff < 0 ? second - diff : diff
  67.  
  68. const { yesterday } = messages
  69. const { years, month, days, hours, minutes, postfix } = getTime(dateObject)
  70.  
  71. const prettyDate =
  72. diff < 2 * second
  73. ? messages.second
  74. : diff < minute
  75. ? messages.seconds.replace('%s', floor(diff / second))
  76. : diff < hour
  77. ? messages.minutes.replace('%s', floor(diff / minute))
  78. : diff < 2 * hour
  79. ? messages.hour
  80. : diff < day
  81. ? messages.hours.replace('%s', floor(diff / hour))
  82. : diff < 2 * day && past
  83. ? `${yesterday}, ${hours}:${minutes} ${postfix}`
  84. : diff < year
  85. ? `${month} ${days}, ${hours}:${minutes} ${postfix}`
  86. : `${month} ${days} ${years}, ${hours}:${minutes} ${postfix}`
  87.  
  88. return prettyDate.replace('%s', past ? beforeSuffix : afterSuffix)
  89.  
  90. // const prettyDate =
  91. // diff < 2 * second
  92. // ? messages.second
  93. // : diff < minute
  94. // ? messages.seconds.replace('%s', floor(diff / second))
  95. // : diff < 2 * minute
  96. // ? messages.minute
  97. // : diff < hour
  98. // ? messages.minutes.replace('%s', floor(diff / minute))
  99. // : diff < 2 * hour
  100. // ? messages.hour
  101. // : diff < day
  102. // ? messages.hours.replace('%s', floor(diff / hour))
  103. // : diff < 2 * day
  104. // ? past
  105. // ? detailed
  106. // ? `${messages.yesterday}, ${detailedDate.hours}:${
  107. // detailedDate.minutes
  108. // } ${detailedDate.postfix}`
  109. // : messages.yesterday
  110. // : messages.tomorrow
  111. // : diff < 3 * day
  112. // ? past
  113. // ? messages.beforeYesterday
  114. // : messages.afterTomorrow
  115. // : detailed
  116. // ? `${detailedDate.month} ${detailedDate.day}, ${detailedDate.hours}:${
  117. // detailedDate.minutes
  118. // } ${detailedDate.postfix}`
  119. // : diff < week
  120. // ? messages.days.replace('%s', floor(diff / day))
  121. // : diff < 2 * week
  122. // ? messages.week
  123. // : diff < 4 * week
  124. // ? messages.weeks.replace('%s', floor(diff / week))
  125. // : diff < 2 * month
  126. // ? messages.month
  127. // : diff < year
  128. // ? messages.months.replace('%s', floor(diff / month))
  129. // : diff < 2 * year
  130. // ? messages.year
  131. // : messages.years.replace('%s', floor(diff / year))
  132.  
  133. // return prettyDate.replace('%s', past ? beforeSuffix : afterSuffix)
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement