猫妈狗爸伴宠师小程序后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

221 lines
6.0 KiB

1 year ago
  1. /**
  2. * Created by lcx47996 on 2017/12/25.
  3. */
  4. export function dateFormat(date, format) {
  5. if (!date || date === 0) {
  6. return ''
  7. }
  8. if (!(date instanceof Date)) {
  9. date = new Date(date)
  10. if (date.toString() === 'Invalid Date') {
  11. return '无效时间戳'
  12. }
  13. }
  14. format = format || 'yyyy-MM-dd hh:mm:ss'
  15. const o = {
  16. 'M+': date.getMonth() + 1, // 月份
  17. 'd+': date.getDate(), // 日
  18. 'h+': date.getHours(), // 小时
  19. 'm+': date.getMinutes(), // 分
  20. 's+': date.getSeconds(), // 秒
  21. 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
  22. 'S': date.getMilliseconds() // 毫秒
  23. };
  24. if (/(y+)/.test(format)) {
  25. format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  26. }
  27. for (const k in o) {
  28. if (new RegExp('(' + k + ')').test(format)) {
  29. format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
  30. }
  31. }
  32. return format;
  33. }
  34. function getAfterDate(after) {
  35. var dd = new Date();
  36. dd.setDate(dd.getDate() + after);// 获取AddDayCount天后的日期
  37. var y = dd.getFullYear();
  38. var m = dd.getMonth() + 1;// 获取当前月份的日期
  39. var d = dd.getDate();
  40. return y + '-' + m + '-' + d;
  41. }
  42. function getAfterDateReturnDate(datetime, after) {
  43. if (!(datetime.type instanceof Date)) {
  44. return datetime
  45. }
  46. var r = new Date(datetime.getTime())
  47. r.setDate(datetime.getDate() + after);// 获取AddDayCount天后的日期
  48. return r;
  49. }
  50. function getAfterHourReturnDate(datetime, after) {
  51. if (!(datetime.type instanceof Date)) {
  52. return datetime
  53. }
  54. var r = new Date(datetime.getTime() + after * 60 * 60 * 1000)
  55. return r;
  56. }
  57. function getAfterMounth(date, after) {
  58. var dd = new Date();
  59. dd.setMonth(dd.getMonth() + after);// 获取AddDayCount天后的日期
  60. var y = dd.getFullYear();
  61. var m = dd.getMonth() + 1;// 获取当前月份的日期
  62. var d = dd.getDate();
  63. return y + '-' + m + '-' + d;
  64. }
  65. /**
  66. * 计算2个日期相差的天数不包含今天2016-12-13到2016-12-15相差2天
  67. */
  68. function dateDiff(startDate, endDate) {
  69. return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24);// 把相差的毫秒数转换为天数
  70. }
  71. /**
  72. * 计算2个日期相差的天数包含今天2016-12-13到2016-12-15相差3天
  73. */
  74. function dateDiffIncludeToday(startDate, endDate) {
  75. return parseInt((endDate - startDate) / 1000 / 60 / 60 / 24) + 1;// 把相差的毫秒数转换为天数
  76. }
  77. /**
  78. * 获取凌晨时间
  79. * @param day
  80. */
  81. export function getMorningTime(day = 0) {
  82. if (day == null) {
  83. return null;
  84. }
  85. const timeStamp = new Date(new Date().setHours(0, 0, 0, 0)).getTime();
  86. return new Date(timeStamp + day * 86400000);
  87. }
  88. export function getStartEnd(length) {
  89. const end = getMorningTime(0);
  90. const start = getMorningTime(0);
  91. start.setTime(start.getTime() - 3600 * 1000 * 24 * length);
  92. return {end, start};
  93. }
  94. function getTimeShort() {
  95. const timeShort = [
  96. {
  97. text: '今天',
  98. onClick(picker) {
  99. const {end, start} = getStartEnd(0);
  100. picker.$emit('pick', [start, end]);
  101. }
  102. },
  103. {
  104. text: '昨天',
  105. onClick(picker) {
  106. const time = getMorningTime(0);
  107. time.setTime(time.getTime() - 3600 * 1000 * 24);
  108. picker.$emit('pick', [time, time]);
  109. }
  110. },
  111. {
  112. text: '最近一周',
  113. onClick(picker) {
  114. const {end, start} = getStartEnd(7);
  115. picker.$emit('pick', [start, end]);
  116. }
  117. }, {
  118. text: '最近一个月',
  119. onClick(picker) {
  120. const {end, start} = getStartEnd(30);
  121. picker.$emit('pick', [start, end]);
  122. }
  123. }, {
  124. text: '最近三个月',
  125. onClick(picker) {
  126. const {end, start} = getStartEnd(90);
  127. picker.$emit('pick', [start, end]);
  128. }
  129. }
  130. ];
  131. return timeShort;
  132. }
  133. function getTimeShort2(){
  134. const timeShort = [
  135. {
  136. text: '今天',
  137. onClick(picker) {
  138. const temp = new Date();
  139. picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]);
  140. }
  141. },
  142. {
  143. text: '昨天',
  144. onClick(picker) {
  145. const temp = new Date();
  146. temp.setTime(temp.getTime() - 3600 * 1000 * 24);
  147. picker.$emit('pick', [new Date(temp.setHours(0, 0, 0, 0)), new Date(temp.setHours(23, 59, 59, 0))]);
  148. }
  149. },
  150. {
  151. text: '前一周',
  152. onClick(picker) {
  153. const start = new Date();
  154. const end = new Date();
  155. start.setTime(end.getTime() - 3600 * 1000 * 24 * 6);
  156. picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
  157. }
  158. },
  159. {
  160. text: '这个月',
  161. onClick(picker) {
  162. const end = getCurrentMonthLast();
  163. const start = getCurrentMonthFirst();
  164. picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
  165. function getCurrentMonthFirst() {
  166. let date = new Date();
  167. date.setDate(1);
  168. return date;
  169. }
  170. // 获取当前月的最后一天
  171. function getCurrentMonthLast() {
  172. let date = new Date();
  173. let currentMonth = date.getMonth();
  174. let nextMonth = ++currentMonth;
  175. let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  176. let oneDay = 1000 * 60 * 60 * 24;
  177. return new Date(nextMonthFirstDay - oneDay);
  178. }
  179. }
  180. },
  181. {
  182. text: '前一个月',
  183. onClick(picker) {
  184. const start = new Date();
  185. const end = new Date();
  186. start.setTime(end.getTime() - 3600 * 1000 * 24 * 29);
  187. picker.$emit('pick', [new Date(start.setHours(0, 0, 0, 0)), new Date(end.setHours(23, 59, 59, 0))]);
  188. }
  189. }
  190. ]
  191. return timeShort
  192. }
  193. export default {
  194. 'getAfterDate': getAfterDate,
  195. 'getAfterMounth': getAfterMounth,
  196. 'dateDiff': dateDiff,
  197. 'dateDiffIncludeToday': dateDiffIncludeToday,
  198. 'getAfterDateReturnDate': getAfterDateReturnDate,
  199. 'getAfterHourReturnDate': getAfterHourReturnDate,
  200. getTimeShort,
  201. getTimeShort2,
  202. dateFormat,
  203. getStartEnd,
  204. getMorningTime
  205. }