time.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import Vue from 'vue'
  2. /**
  3. * 实时时间转换指令,大于一个月则返回具体的年月日
  4. * @param { string } timeStamp - 时间 格式:年-月-日 时:分:秒 或 时间戳
  5. * @returns { string }
  6. */
  7. function getFormatTime(timeStamp){
  8. var dateTime = new Date(timeStamp);
  9. var no1new = dateTime.valueOf();
  10. var year = dateTime.getFullYear();
  11. var month = dateTime.getMonth() + 1;
  12. var day = dateTime.getDate();
  13. var hour = dateTime.getHours();
  14. var minute = dateTime.getMinutes();
  15. var second = dateTime.getSeconds();
  16. var now = new Date();
  17. var now_new = now.valueOf();
  18. var milliseconds = 0;
  19. var timeSpanStr;
  20. milliseconds = now_new - no1new;
  21. if (milliseconds <= 1000 * 60 * 1) {
  22. timeSpanStr = '刚刚';
  23. }else if (1000 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60) {
  24. timeSpanStr = Math.round((milliseconds / (1000 * 60))) + '分钟前';
  25. }else if (1000 * 60 * 60 * 1 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24) {
  26. timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60)) + '小时前';
  27. }else if (1000 * 60 * 60 * 24 < milliseconds && milliseconds <= 1000 * 60 * 60 * 24 * 15) {
  28. timeSpanStr = Math.round(milliseconds / (1000 * 60 * 60 * 24)) + '天前';
  29. }else if (milliseconds > 1000 * 60 * 60 * 24 * 15 && year == now.getFullYear()) {
  30. // timeSpanStr = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
  31. timeSpanStr = year + '-' + month + '-' + day
  32. }else {
  33. // timeSpanStr = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second;
  34. timeSpanStr = year + '-' + month + '-' + day
  35. }
  36. return timeSpanStr;
  37. }
  38. Vue.directive('time', {
  39. bind: function(el, binding){
  40. el.innerHTML = getFormatTime(binding.value);
  41. //每隔一分钟更新一次
  42. el.__timeout__ = setInterval(function(){
  43. el.innerHTML = getFormatTime(binding.value);
  44. }, 60000);
  45. },
  46. unbind: function(el){
  47. clearInterval(el.__timeout__);
  48. delete el.__timeout__;
  49. }
  50. });