app-timer.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <text :style="{color: color, fontSize: `${fontSize}rpx`}">{{html}}</text>
  3. </template>
  4. <script>
  5. export default {
  6. name: 'app-timer',
  7. data() {
  8. return {
  9. time: null,
  10. html: ''
  11. }
  12. },
  13. props: {
  14. startTime: {
  15. type: String,
  16. default: function() {
  17. return '2019-8-30 10:00:00';
  18. }
  19. },
  20. color: {
  21. type: String,
  22. default: function() {
  23. return 'white';
  24. }
  25. },
  26. fontSize: {
  27. type: String,
  28. default: function() {
  29. return '26';
  30. }
  31. }
  32. },
  33. beforeDestroy() {
  34. clearInterval(this.time);
  35. },
  36. watch: {
  37. startTime: {
  38. handler: function(v) {
  39. let timelog = new Date(v.replace(/-/g, '/'));
  40. this.time = setInterval(() =>{
  41. let timenow = new Date();//获取当前时间
  42. let time = timelog.getTime() - timenow.getTime();//时间差的所有毫秒数
  43. let day = parseInt((time/1000/60/60/24)%30);
  44. let hou = parseInt((time/1000/60/60)%24);
  45. let min = parseInt((time/1000/60)%60);
  46. let sec = parseInt((time/1000)%60);
  47. this.html = day+"天"+hou+":"+(min<10?"0"+min:min) + ":"+(sec<10?"0"+sec:sec);
  48. },1000);
  49. },
  50. immediate: true
  51. }
  52. }
  53. }
  54. </script>