dateUtil.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace common\components;
  3. use Yii;
  4. class dateUtil
  5. {
  6. //日期时间转换 shish 2021.3.4
  7. public static function formatTime($searchTime, $startTime, $endTime)
  8. {
  9. switch ($searchTime) {
  10. case 'yesterday':
  11. //昨天
  12. $startTime = date("Y-m-d 00:00:00", strtotime("-1 day"));
  13. $endTime = date("Y-m-d 23:59:59", strtotime("-1 day"));
  14. break;
  15. case 'today':
  16. //今天
  17. $startTime = date("Y-m-d 00:00:00");
  18. $endTime = date("Y-m-d 23:59:59");
  19. break;
  20. case 'thisMonth':
  21. //本月
  22. $startTime = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), 1, date("Y")));
  23. $endTime = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), date("t"), date("Y")));
  24. break;
  25. case 'lastMonth':
  26. //上个月
  27. $start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m") - 1, 1, date("Y")));
  28. $endTime = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), 0, date("Y")));
  29. break;
  30. case 'thisYear':
  31. //今年
  32. $startTime = date("Y-m-d H:i:s", mktime(0, 0, 0, 1, 1, date("Y")));
  33. $endTime = date("Y-m-d H:i:s", mktime(23, 59, 59, 1, 0, date("Y", strtotime('+1 year'))));
  34. break;
  35. case 'lastWeek':
  36. //上周
  37. $start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1 - 7, date("Y")));
  38. $endTime = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), date("d") - date("w") + 7 - 7, date("Y")));
  39. break;
  40. case 'thisWeek':
  41. //本周
  42. $start = date("Y-m-d H:i:s", mktime(0, 0, 0, date("m"), date("d") - date("w") + 1, date("Y")));
  43. $endTime = date("Y-m-d H:i:s", mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y")));
  44. break;
  45. case 'thisSeason':
  46. //本季度
  47. //本季度未最后一月天数
  48. $getMonthDays = date("t", mktime(0, 0, 0, date('n') + (date('n') - 1) % 3, 1, date("Y")));
  49. $start = date('Y-m-d H:i:s', mktime(0, 0, 0, date('n') - (date('n') - 1) % 3, 1, date('Y')));
  50. $endTime = date('Y-m-d H:i:s', mktime(23, 59, 59, date('n') + (date('n') - 1) % 3, $getMonthDays, date('Y')));
  51. break;
  52. case 'custom':
  53. //自定义
  54. if (empty($startTime)) {
  55. util::fail('请选择开始时间');
  56. }
  57. if (empty($endTime)) {
  58. util::fail('请选择结束时间');
  59. }
  60. $startTime = $startTime . ' 00:00:00';
  61. $endTime = $endTime . ' 23:59:59';
  62. break;
  63. default:
  64. //今天
  65. $startTime = date("Y-m-d 00:00:00");
  66. $endTime = date("Y-m-d 23:59:59");
  67. }
  68. return ['startTime' => $startTime, 'endTime' => $endTime];
  69. }
  70. //获取日期 shish 2019.9.16
  71. public static function getDate($type = 0)
  72. {
  73. switch ($type) {
  74. case 1:
  75. //最近7天
  76. $start = date('Ymd', strtotime("-7 days"));
  77. $end = date("Ymd");
  78. break;
  79. case 2:
  80. //最近30天
  81. $start = date('Ymd', strtotime("-30 days"));
  82. $end = date("Ymd");
  83. break;
  84. case 3:
  85. //本月
  86. $start = date("Ym") . "01";
  87. $end = date("Ymd");
  88. break;
  89. case 4:
  90. //上个月
  91. $start = date("Ymd", mktime(0, 0, 0, date("m") - 1, 1, date("Y")));
  92. $end = date("Ymd", mktime(23, 59, 59, date("m"), 0, date("Y")));
  93. break;
  94. }
  95. return [$start, $end];
  96. }
  97. //取月份 $type=30以上的表示取月份 shish 2019.12.31
  98. public static function getMonth($type = 30)
  99. {
  100. $end = date("Ym");
  101. switch ($type) {
  102. case 30:
  103. //最近3个月
  104. $start = self::getStartMonth(3);
  105. break;
  106. case 31:
  107. //最近半年
  108. $start = self::getStartMonth(6);
  109. break;
  110. case 32:
  111. //最近一年
  112. $start = self::getStartMonth(12);
  113. break;
  114. case 33:
  115. //今年
  116. $start = date("Y01");
  117. break;
  118. default:
  119. $start = self::getStartMonth(3);
  120. }
  121. return [$start, $end];
  122. }
  123. //获取开始的月份 shish 2019.12.31
  124. public static function getStartMonth($num)
  125. {
  126. $base = date('Ym01');
  127. for ($i = 1; $i < $num; $i++) {
  128. $start = date('Ym', strtotime('-1 month', strtotime($base)));
  129. $base = $start . '01';
  130. }
  131. return $start;
  132. }
  133. }