date.ts 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306
  1. //@ts-ignore
  2. import moment from 'moment'
  3. //@ts-ignore
  4. import {getServerDateApi} from "@/api/public-api";
  5. import XEUtils from 'xe-utils'
  6. export enum DATEFORMAT {
  7. DATE = 'YYYY-MM-DD',
  8. DATE_TIME = 'YYYY-MM-DD HH:mm:ss',
  9. TIME = 'HH:mm:ss',
  10. DATE_HOUR_CHINE = 'YYYY年MM月DD日HH点'
  11. }
  12. export function getDate() {
  13. const date = new Date()
  14. const year = date.getFullYear()
  15. let month = date.getMonth() + 1
  16. let day = date.getDate()
  17. return year + '-' + ('0' + month).slice(-2) + '-' + ('0' + day).slice(-2)
  18. }
  19. export function getDatetime() {
  20. const now = new Date()
  21. const year = now.getFullYear()
  22. const month = now.getMonth() + 1
  23. const day = now.getDate()
  24. const hh = now.getHours()
  25. const mm = now.getMinutes()
  26. const ss = now.getSeconds()
  27. let clock = year + '-'
  28. if (month < 10) clock += '0'
  29. clock += month + '-'
  30. if (day < 10) clock += '0'
  31. clock += day + ' '
  32. if (hh < 10) clock += '0'
  33. clock += hh + ':'
  34. if (mm < 10) clock += '0'
  35. clock += mm + ':'
  36. if (ss < 10) clock += '0'
  37. clock += ss
  38. return clock
  39. }
  40. export function compareDate(date1, date2) {
  41. const oDate1 = new Date(date1)
  42. const oDate2 = new Date(date2)
  43. return oDate1.getTime() > oDate2.getTime()
  44. }
  45. export function huanHangXianShi(date) {
  46. let clock = date.split(' ')
  47. return clock[0] + '<br />' + clock[1]
  48. }
  49. export function formatDatetime(date) {
  50. if (typeof date === 'undefined') return null
  51. if (date === '' || date === null) return null
  52. if (typeof date === 'string') return date
  53. const year = date.getFullYear()
  54. const month = date.getMonth() + 1
  55. const day = date.getDate()
  56. const hh = date.getHours()
  57. const mm = date.getMinutes()
  58. const ss = date.getSeconds()
  59. let clock = year + '-'
  60. if (month < 10) clock += '0'
  61. clock += month + '-'
  62. if (day < 10) clock += '0'
  63. clock += day + ' '
  64. if (hh < 10) clock += '0'
  65. clock += hh + ':'
  66. if (mm < 10) clock += '0'
  67. clock += mm + ':'
  68. if (ss < 10) clock += '0'
  69. clock += ss
  70. return clock
  71. }
  72. export function formatDate(date) {
  73. if (typeof date === 'undefined') return null
  74. if (date === '' || date === null) return null
  75. if (typeof date === 'string') return date
  76. const year = date.getFullYear()
  77. const month = date.getMonth() + 1
  78. const day = date.getDate()
  79. return year + '-' + ('0' + month).slice(-2) + '-' + ('0' + day).slice(-2)
  80. }
  81. export function getOneMonthOffset() {
  82. const myDate = new Date()
  83. let year = myDate.getFullYear()
  84. let month = myDate.getMonth()
  85. let date = myDate.getDate()
  86. let end = year + '-' + ('0' + (month + 1)).slice(-2) + '-' + ('0' + date).slice(-2)
  87. if (month === 0) {
  88. year -= 1
  89. month = 12
  90. } else if (month === 2) {
  91. date = date > 28 ? 28 : date
  92. } else {
  93. date = date > 30 ? 30 : date
  94. }
  95. let start = year + '-' + ('0' + month).slice(-2) + '-' + ('0' + date).slice(-2)
  96. return {start, end}
  97. }
  98. export function getRawMonthOffset() {
  99. const myDate = new Date()
  100. let year = myDate.getFullYear()
  101. let month = myDate.getMonth()
  102. let end = year + '-' + ('0' + (month + 1)).slice(-2)
  103. if (month === 0) {
  104. year -= 1
  105. month = 12
  106. }
  107. let start = year + '-' + ('0' + month).slice(-2)
  108. return {start, end}
  109. }
  110. export function getDateRangeFormatDate(data) {
  111. let startTime = ''
  112. let endTime = ''
  113. //用户手动输入了日期 并且没有按下大键盘上面的回车
  114. if (data === null || data.length === 0) return {startTime, endTime}
  115. if (typeof data[0].$d !== 'undefined') {
  116. startTime = getFormatDatetime(data[0].$d, DATEFORMAT.DATE) + ' 00:00:00'
  117. endTime = getFormatDatetime(data[1].$d, DATEFORMAT.DATE) + ' 23:59:59'
  118. } else {
  119. startTime = getFormatDatetime(data[0], DATEFORMAT.DATE) + ' 00:00:00'
  120. endTime = getFormatDatetime(data[1], DATEFORMAT.DATE) + ' 23:59:59'
  121. }
  122. return {startTime, endTime}
  123. }
  124. export function getDateRangeFormatDateTime(date) {
  125. let startTime = ''
  126. let endTime = ''
  127. if (!date) return {startTime, endTime}
  128. if (!date[0] || !date[1]) return {startTime, endTime}
  129. //用户手动输入了日期 并且没有按下大键盘上面的回车
  130. if (date[0].$d) {
  131. startTime = getFormatDatetime(date[0].$d)
  132. endTime = getFormatDatetime(date[1].$d)
  133. } else {
  134. startTime = getFormatDatetime(date[0])
  135. endTime = getFormatDatetime(date[1])
  136. }
  137. return {startTime, endTime}
  138. }
  139. export function formatYear(date) {
  140. if (typeof date === 'undefined') return null
  141. if (date === '' || date === null) return null
  142. if (typeof date === 'string') return date
  143. return date.getFullYear()
  144. }
  145. export function formatMonth(date) {
  146. if (typeof date === 'string') return date
  147. if (typeof date === 'undefined') return null
  148. if (date === '' || date === null) return null
  149. const year = date.getFullYear()
  150. const month = date.getMonth() + 1
  151. return year + '-' + ('0' + month).slice(-2)
  152. }
  153. /**
  154. * 格式化日期
  155. * @param date 日期
  156. * @param pattern 格式
  157. * @returns {string} 返回格式好的日期
  158. */
  159. export function getFormatDatetime(date: any, pattern: DATEFORMAT | string = DATEFORMAT.DATE_TIME): string {
  160. if (XEUtils.isEmpty(date)) {
  161. return ''
  162. }
  163. return moment(date).format(pattern)
  164. }
  165. export function getLastMonth() {
  166. const myDate = new Date()
  167. let year = myDate.getFullYear()
  168. let month = myDate.getMonth()
  169. if (month === 0) {
  170. year -= 1
  171. month = 12
  172. }
  173. return year + '-' + ('0' + month).slice(-2)
  174. }
  175. export function judgeToday(date1, date2) {
  176. return moment(date2).isSame(moment(), "day")
  177. }
  178. // 时间相减
  179. export function subtractTime(date1, date2) {
  180. date1 = moment(date1)
  181. date2 = moment(date2)
  182. return date1.diff(date2, 'day', false)
  183. }
  184. export function formatMonth1(date) {
  185. if (typeof date === 'undefined') return null
  186. if (date === '' || date === null) return null
  187. if (typeof date === 'string') return date
  188. const year = date.getFullYear()
  189. const month = date.getMonth() + 1
  190. return year + ('0' + month).slice(-2)
  191. }
  192. export function getDateTiffDays(value) {
  193. // value---最近天数
  194. return moment(new Date().getTime() - value * 1000 * 24 * 60 * 60).format('YYYY-MM-DD hh:mm:ss')
  195. }
  196. // 获取前day的日期(arr是日期拼接符,默认'-')
  197. export function getDayAgo(day, arr, type) {
  198. var today = new Date();
  199. // 日期拼接符
  200. if (!arr) {
  201. arr = '-'
  202. }
  203. var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
  204. //注意,这行是关键代码
  205. today.setTime(targetday_milliseconds);
  206. var tYear = today.getFullYear();
  207. var tMonth = today.getMonth();
  208. var tDate = today.getDate();
  209. tMonth = doHandleMonth(tMonth + 1);
  210. tDate = doHandleMonth(tDate);
  211. // 显示年月
  212. if (1 === type) {
  213. return tYear + arr + tMonth
  214. } else if (2 === type) {
  215. // 显示月日
  216. return tMonth + arr + tDate;
  217. } else {
  218. // 显示年月日
  219. return tYear + arr + tMonth + arr + tDate;
  220. }
  221. }
  222. function doHandleMonth(month) {
  223. let m = month;
  224. if (month.toString().length === 1) {
  225. m = "0" + month;
  226. }
  227. return m;
  228. }
  229. export const currentAndAFewDaysAgo = async (day = 7, format: string = 'YYYY-MM-DD') => {
  230. let date = await getServerDateApi();
  231. let now = moment(new Date(date)).format(format)
  232. let start = moment(new Date(date)).subtract(day, 'day')
  233. return [moment(start).format(format), now]
  234. }
  235. export const dateRangeAddTime = (val) => {
  236. if (XEUtils.isEmpty(val)) {
  237. return {
  238. start: '',
  239. end: ''
  240. }
  241. }
  242. if (val.length === 2) {
  243. let start = moment(val[0]).format(DATEFORMAT.DATE)
  244. let end = moment(val[1]).format(DATEFORMAT.DATE)
  245. return {
  246. start: start + ' 00:00:00',
  247. end: end + ' 23:59:59'
  248. }
  249. }
  250. return {
  251. start: '',
  252. end: ''
  253. }
  254. }
  255. export const getDateRange = (val) => {
  256. if (XEUtils.isEmpty(val)) {
  257. return {start: '', end: ''}
  258. }
  259. if (!XEUtils.isArray(val)) {
  260. return {start: '', end: ''}
  261. }
  262. if (val.length === 2) {
  263. let start = moment(val[0]).format(DATEFORMAT.DATE)
  264. let end = moment(val[1]).format(DATEFORMAT.DATE)
  265. return {start, end}
  266. }
  267. return {start: '', end: ''}
  268. }
  269. // 获取两个日期的时间差返回天数,使用moment
  270. export const getDateDiffToDay = (start, end) => {
  271. return moment(end).diff(moment(start), 'day')
  272. }