time.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { changeDateFormat } from './date'
  2. let now = new Date();
  3. let year = now.getFullYear();
  4. let month = now.getMonth();//真实的月份需要再加上1
  5. let day = now.getDate();
  6. let currentTime = new Date();
  7. let frontItemTimeStamp = 0
  8. function dealChatTime(currentItemTimeStamp) {
  9. currentItemTimeStamp = changeDateFormat(currentItemTimeStamp)
  10. let ifShowTime = timeDivide(currentItemTimeStamp, frontItemTimeStamp);
  11. frontItemTimeStamp = currentItemTimeStamp
  12. return justSimpleDealTime(currentItemTimeStamp, ifShowTime);
  13. }
  14. function timeDivide(currentItemTimeStamp) {
  15. // console.log('时间戳显示时间', currentItemTimeStamp, frontItemTimeStamp);
  16. return Math.abs(currentItemTimeStamp - frontItemTimeStamp) / 1000 > 300
  17. }
  18. function justSimpleDealTime(currentItemTimeStamp, ifShowTime) {
  19. currentTime.setTime(currentItemTimeStamp);
  20. let hoursAndMinutes = currentTime.getHours() + ':' + (currentTime.getMinutes() >= 10 ? currentTime.getMinutes() : ('0' + currentTime.getMinutes()));
  21. let currentTimeDay = currentTime.getDate();
  22. if (currentTime.getFullYear() === year && currentTime.getMonth() === month) {
  23. if (currentTimeDay === day) {//当天显示时分
  24. return {//5分钟内发送多条消息时不重复显示时间标签,大于5分钟显示时间标签
  25. ifShowTime: ifShowTime,
  26. timeStr: hoursAndMinutes
  27. };
  28. } else if (currentTimeDay === day - 1) {//昨天:昨天+时分(24小时制)
  29. return {ifShowTime: ifShowTime, timeStr: '昨天 ' + hoursAndMinutes}
  30. } else {
  31. return {ifShowTime: ifShowTime, timeStr: (currentTime.getMonth() + 1) + '月' + currentTimeDay + '日 ' + hoursAndMinutes}
  32. }
  33. }
  34. return {
  35. ifShowTime: ifShowTime,
  36. timeStr: currentTime.getFullYear() + '年' + (currentTime.getMonth() + 1) + '月' + currentTimeDay + '日 ' + hoursAndMinutes
  37. };
  38. }
  39. module.exports = {
  40. dealChatTime
  41. };