publish-time.uts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. export default function translatePublishTime(timestamp: number): string {
  2. let result: string
  3. // 获取当前时间
  4. const currentData = new Date()
  5. // 获取发布时间
  6. const date = new Date(timestamp)
  7. // 获取发布年份
  8. const year = date.getFullYear()
  9. // 获取发布月份
  10. const mouth = date.getMonth() + 1
  11. // 获取发布日期
  12. const day = date.getDate()
  13. // 获取发布小时
  14. const hours = date.getHours()
  15. // 获取发布分钟
  16. const minute = date.getMinutes()
  17. // 获取发布秒数
  18. const second = date.getSeconds()
  19. // 获取发布时间戳
  20. const timer = date.getTime()
  21. // 获取当前年份
  22. const currentYear = currentData.getFullYear()
  23. // 获取当前月份
  24. const currentMonth = currentData.getMonth() + 1
  25. // 获取当前日期
  26. const currentDay = currentData.getDate()
  27. // 获取当前小时
  28. const currentHours = currentData.getHours()
  29. // 获取当前分钟
  30. let currentMinute = currentData.getMinutes()
  31. // 获取当前秒数
  32. const currentSecond = currentData.getSeconds()
  33. // 获取当前时间戳
  34. const currentTimer = currentData.getTime()
  35. // 如果时间差小于10秒
  36. if ((currentTimer - timer) < 1000 * 10) {
  37. // 显示刚刚
  38. result = `刚刚`;
  39. // 如果时间差小于60秒
  40. } else if ((currentTimer - timer) < 1000 * 60) {
  41. // 如果当前分钟大于发布分钟
  42. if (currentMinute > minute) {
  43. // 显示秒数差
  44. result = `${(((currentMinute - minute) * 60) + currentSecond - second)}秒前`;
  45. } else {
  46. // 显示秒数差
  47. result = `${(currentSecond - second)}秒前`;
  48. }
  49. // 如果时间差小于1小时
  50. } else if ((currentTimer - timer) < 1000 * (60 * 60)) {
  51. // 如果当前小时大于发布小时
  52. if (currentHours > hours) {
  53. // 显示分钟差
  54. result = `${(((currentHours - hours) * 60) + currentMinute - minute)}分钟前`;
  55. } else {
  56. // 修改 昨天发布的文章时间会出现负数
  57. // 如果当前分钟小于发布分钟
  58. if (currentMinute < minute) {
  59. // 当前分钟加60
  60. currentMinute += 60
  61. }
  62. // 显示分钟差
  63. result = `${(currentMinute - minute)}分钟前`;
  64. }
  65. // 如果时间差小于1天
  66. } else if ((currentTimer - timer) < 1000 * (24 * 60 * 60)) {
  67. // 如果当前日期大于发布日期
  68. if (currentDay > day) {
  69. // 显示小时差
  70. result = `${((currentDay - day) * 24 + currentHours - hours)}小时前`;
  71. } else {
  72. // 修改 跨月-昨天发布的文章时间会出现负数
  73. // 如果当前月份不等于发布月份
  74. if (currentMonth !== mouth) {
  75. // 显示小时差
  76. result = `${(24 + currentHours - hours)}小时前`;
  77. } else {
  78. // 显示小时差
  79. result = `${(currentHours - hours)}小时前`;
  80. }
  81. }
  82. // 如果发布年份等于当前年份
  83. } else if (currentYear === year) {
  84. // 显示月份和日期
  85. result = `${mouth}月${day}日`;
  86. } else {
  87. // 显示年份、月份和日期
  88. result = `${year}年${mouth}月${day}日`;
  89. }
  90. return result // 返回结果
  91. }