YearProgress.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div class="progressbar">
  3. <progress :percent="percent" activeColor="#EA5A49" show-info />
  4. <p>{{year}}已经过去{{days}}天</p>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. methods: {
  10. isLeapYear () {
  11. const year = new Date().getFullYear()
  12. if (year % 400 === 0) {
  13. return true
  14. } else if (year % 4 === 0 && year % 100 !== 0) {
  15. return true
  16. } else {
  17. return false
  18. }
  19. },
  20. getDayOfYear () {
  21. return this.isLeapYear() ? 366 : 365
  22. }
  23. },
  24. computed: {
  25. year () {
  26. return new Date().getFullYear()
  27. },
  28. days () {
  29. let start = new Date()
  30. start.setMonth(0)
  31. start.setDate(1)
  32. // start 就是今年第一天
  33. // 今年时间戳 - 今年第一天时间戳
  34. let offset = new Date().getTime() - start.getTime()
  35. return parseInt(offset / 1000 / 60 / 60 / 24) + 1
  36. },
  37. percent () {
  38. return (this.days * 100 / this.getDayOfYear()).toFixed(1)
  39. }
  40. }
  41. }
  42. </script>
  43. <style lang='scss'>
  44. .progressbar{
  45. text-align: center;
  46. margin-top: 10px;
  47. margin-bottom: 40px;
  48. width: 100%;
  49. progress {
  50. margin-bottom: 10px;
  51. }
  52. }
  53. </style>