获取当天日期的时间戳||日期相关的函数

墨蓝 2022-03-09 16:52 1129阅读 0赞

一、获取当天的时间戳

  1. new Date(new Date().setHours(0, 0, 0, 0)).getTime() //当天0点的时间戳
  2. new Date(new Date().setHours(23, 59, 59, 999)).getTime() //当天24点的时间戳

二、日期相关的封装函数

  1. import _ from 'lodash'
  2. const hiddenProperty = (() => {
  3. // document[hiddenProperty] 可以判断页面是否失焦
  4. let names = ['hidden', 'webkitHidden', 'mozHidden', 'msHidden']
  5. names = names.filter(e => e in document)
  6. return names.length > 0 ? names[0] : false
  7. })()
  8. const visibilityChangeEvent = (() => {
  9. if (!hiddenProperty) {
  10. return false
  11. }
  12. return hiddenProperty.replace(/hidden/i, 'visibilitychange') // 如果属性有前缀, 相应的事件也有前缀
  13. })()
  14. export default {
  15. // 日期格式化方法
  16. fmtDate (td, fmtExp) {
  17. if (!td) {
  18. return ''
  19. }
  20. const date = new Date(td)
  21. const o = {
  22. 'M+': date.getMonth() + 1, // 月份
  23. 'd+': date.getDate(), // 日
  24. 'h+': date.getHours(), // 小时
  25. 'm+': date.getMinutes(), // 分
  26. 's+': date.getSeconds(), // 秒
  27. 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
  28. S: date.getMilliseconds() // 毫秒
  29. }
  30. let dateFmt = fmtExp
  31. if (/(y+)/.test(dateFmt)) {
  32. dateFmt = dateFmt.replace(RegExp.$1, (`${date.getFullYear()}`).substr(4 - RegExp.$1.length))
  33. }
  34. for (const k in o) {
  35. if (new RegExp(`(${k})`).test(dateFmt)) {
  36. dateFmt = dateFmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((`00${o[k]}`).substr((`${o[k]}`).length)))
  37. }
  38. }
  39. return dateFmt
  40. },
  41. getDate (td) {
  42. if (td instanceof Date) {
  43. const dateStr = this.fmtDate(td.getTime(), 'yyyy-MM-dd')
  44. return new Date(dateStr).getTime() - 28800000
  45. }
  46. return null
  47. },
  48. getStartDate (td) {
  49. return this.getDate(td)
  50. },
  51. getEndDate (td) {
  52. if (td instanceof Date) {
  53. const dateStr = this.fmtDate(td.getTime(), 'yyyy-MM-dd')
  54. return new Date(dateStr).getTime() + 57600000
  55. }
  56. return null
  57. },
  58. getTodayLastTime (td) {
  59. if (td instanceof Date) {
  60. const dateStr = this.fmtDate(td.getTime(), 'yyyy-MM-dd')
  61. return new Date(dateStr).getTime() + 57600000 - 1
  62. }
  63. return null
  64. },
  65. isFn (fn) {
  66. return typeof fn === 'function'
  67. },
  68. getCookie: name => {
  69. const reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)')
  70. const arr = document.cookie.match(reg)
  71. if (arr) {
  72. return unescape(arr[2])
  73. } else {
  74. return null
  75. }
  76. },
  77. setCookie (name, value) {
  78. const Days = 3000
  79. const exp = new Date()
  80. exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000)
  81. document.cookie = name + '=' + escape(value) + ';expires=' + exp.toGMTString() + ';path=/'
  82. },
  83. deleteCookie (name) {
  84. const exp = new Date()
  85. exp.setTime(exp.getTime() - 1)
  86. const cval = this.getCookie(name)
  87. if (cval != null) {
  88. document.cookie = `${name}=${cval};expires=${exp.toGMTString()}`
  89. }
  90. },
  91. hasClass (obj, cls) {
  92. if (obj) {
  93. return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
  94. }
  95. return null
  96. },
  97. addClass (obj, cls) {
  98. if (obj && !this.hasClass(obj, cls)) {
  99. if (obj.className) {
  100. obj.className += ' ' + cls
  101. } else {
  102. obj.className = cls
  103. }
  104. }
  105. },
  106. removeClass (obj, cls) {
  107. if (obj && this.hasClass(obj, cls)) {
  108. var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
  109. obj.className = obj.className.replace(reg, ' ')
  110. }
  111. },
  112. toggleClass (obj, cls) {
  113. if (this.hasClass(obj, cls)) {
  114. this.removeClass(obj, cls)
  115. } else {
  116. this.addClass(obj, cls)
  117. }
  118. },
  119. formatFile (file) {
  120. const format = file.name.split('.').pop().toLocaleLowerCase() || ''
  121. let type = 'document'
  122. if (['gif', 'jpg', 'jpeg', 'png', 'bmp', 'webp'].indexOf(format) > -1) {
  123. type = 'image'
  124. }
  125. if (['mp4', 'm3u8', 'rmvb', 'avi', 'swf', '3gp', 'mkv', 'flv'].indexOf(format) > -1) {
  126. type = 'ios-film'
  127. }
  128. if (['mp3', 'wav', 'wma', 'ogg', 'aac', 'flac'].indexOf(format) > -1) {
  129. type = 'ios-musical-notes'
  130. }
  131. if (['doc', 'txt', 'docx', 'pages', 'epub', 'pdf'].indexOf(format) > -1) {
  132. type = 'document-text'
  133. }
  134. if (['numbers', 'csv', 'xls', 'xlsx'].indexOf(format) > -1) {
  135. type = 'stats-bars'
  136. }
  137. if (['keynote', 'ppt', 'pptx'].indexOf(format) > -1) {
  138. type = 'ios-videocam'
  139. }
  140. return type
  141. },
  142. getToken () {
  143. let token = this.getCookie('ssss')
  144. if (!token) {
  145. token = this.getCookie('token')
  146. }
  147. return token
  148. },
  149. isImage (items) {
  150. const len = items.length
  151. let i = 0
  152. let item = null
  153. while (i < len) {
  154. item = items[i]
  155. // 针对从word中粘贴来的内容
  156. if (item.type.includes('rtf')) return false
  157. if (item.type.includes('image')) {
  158. return item
  159. }
  160. i++
  161. }
  162. return false
  163. },
  164. // 常用的接口返回数据处理
  165. handleCommonResponse (i, res, fn) {
  166. if (res) {
  167. if (res.data.isSuccess) {
  168. fn(res.data)
  169. } else {
  170. i.$Message.error({
  171. content: res.data.resultMsg,
  172. duration: 5
  173. })
  174. }
  175. }
  176. },
  177. getModuleListByRequireContext (r) {
  178. let moduleList = []
  179. r.keys().forEach(key => {
  180. moduleList.push(r(key).default)
  181. })
  182. return moduleList
  183. },
  184. hiddenProperty,
  185. visibilityChangeEvent,
  186. isSpaces (str) {
  187. const barringSpace = str.replace(/\s/g, '')
  188. return !barringSpace
  189. },
  190. // 小时转化为毫秒 value => HH:mm
  191. hourConversionMs (value) {
  192. let colonIndex = value.indexOf(':')
  193. let hour = Number(value.substring(0, colonIndex))
  194. let minute = Number(value.substring(colonIndex + 1))
  195. return hour * 3600 * 1000 + minute * 60 * 1000
  196. },
  197. // 毫秒转换为小时 HH:mm => ms
  198. msConversionHour (value) {
  199. if (typeof value === 'number' && !isNaN(value)) {
  200. let hour = parseInt(value / (1000 * 60 * 60))
  201. let minute = (value % (1000 * 60 * 60)) / (1000 * 60)
  202. hour = hour < 10 ? '0' + hour : hour
  203. minute = minute < 10 ? '0' + minute : minute
  204. return `${hour}:${minute}`
  205. }
  206. },
  207. fitlerPercent (value) {
  208. if (!_.isNumber(value)) {
  209. return '未知'
  210. }
  211. return (parseFloat((value * 100).toFixed(2)) || 0) + '%'
  212. },
  213. realFormatSecond (second) {
  214. // 将整数转换成 时:分:秒的格式
  215. var secondType = typeof second
  216. if (secondType === 'number' || secondType === 'string') {
  217. second = parseInt(second)
  218. var hours = Math.floor(second / 3600)
  219. second = second - hours * 3600
  220. var mimute = Math.floor(second / 60)
  221. second = second - mimute * 60
  222. return hours + ':' + ('0' + mimute).slice(-2) + ':' + ('0' + second).slice(-2)
  223. } else {
  224. return '0:00:00'
  225. }
  226. }
  227. }

发表评论

表情:
评论列表 (有 0 条评论,1129人围观)

还没有评论,来说两句吧...

相关阅读