date.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // 时间戳转换为年月日时分秒
  2. export const timesTampChange = (timestamp, format = 'Y-M-D h:m:s') => {
  3. if (!timestamp) return ''
  4. const date = new Date(timestamp)
  5. const Y = date.getFullYear().toString()
  6. const M = (date.getMonth() + 1).toString().padStart(2, '0')
  7. const D = date.getDate().toString().padStart(2, '0')
  8. const h = date.getHours().toString().padStart(2, '0')
  9. const m = date.getMinutes().toString().padStart(2, '0')
  10. const s = date.getSeconds().toString().padStart(2, '0')
  11. const formatter = { 'Y': Y, 'M': M, 'D': D, 'h': h, 'm': m, 's': s } // 替换format中的占位符
  12. let formattedDate = format.replace(/Y|M|D|h|m|s/g, matched => formatter[matched]) // 使用正则表达式匹配并替换占位符
  13. if (!formattedDate) formattedDate = Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s
  14. return formattedDate
  15. }
  16. // 将 Wed May 01 2024 00:00:00 GMT+0800 (中国标准时间) 转换为时间戳
  17. export const getTimeStamp = (str) => {
  18. if (!str) return ''
  19. const date = new Date(str)
  20. return date.getTime()
  21. }
  22. // 传入一个时间戳返回这个日期的最早时间点以及最晚时间点 输出:[1721232000000, 1721318399999]
  23. export const getDayBounds = (timestamp) => {
  24. const date = new Date(timestamp)
  25. date.setHours(0, 0, 0, 0)
  26. const startOfDay = date.getTime()
  27. const endOfDay = new Date(timestamp)
  28. endOfDay.setHours(23, 59, 59, 999)
  29. if (endOfDay.getDate() !== date.getDate()) {
  30. endOfDay.setDate(endOfDay.getDate() - 1)
  31. endOfDay.setHours(23, 59, 59, 999)
  32. }
  33. // 返回包含最早和最晚时间点的时间戳的数组
  34. return [startOfDay, endOfDay.getTime()]
  35. }
  36. // 传入 Wed May 01 2024 00:00:00 GMT+0800 (中国标准时间) 输出 [2024-07-18 00:00:00, 2024-07-18 23:59:59]
  37. export const getStartAndEndOfDay = (dateTimeStr) => {
  38. const date = new Date(dateTimeStr)
  39. const year = date.getFullYear()
  40. const month = String(date.getMonth() + 1).padStart(2, '0')
  41. const day = String(date.getDate()).padStart(2, '0')
  42. const startTime = `${year}-${month}-${day} 00:00:00`
  43. const endTime = `${year}-${month}-${day} 23:59:59`
  44. return [startTime, endTime]
  45. }
  46. // 传入一组时间戳,返回 [最早时间点,最晚时间点]
  47. export const convertTimestampsToDayRange = (timestamps) => {
  48. if (timestamps.length < 2) {
  49. throw new Error('Timestamps array must contain at least two elements')
  50. }
  51. function formatDate(date) {
  52. const year = date.getFullYear();
  53. const month = String(date.getMonth() + 1).padStart(2, '0')
  54. const day = String(date.getDate()).padStart(2, '0')
  55. const hours = String(date.getHours()).padStart(2, '0')
  56. const minutes = String(date.getMinutes()).padStart(2, '0')
  57. const seconds = String(date.getSeconds()).padStart(2, '0')
  58. return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
  59. }
  60. const startDate = new Date(timestamps[0])
  61. const endDate = new Date(timestamps[1])
  62. const startOfDay = new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate())
  63. const endOfDay = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate() + 1, 0, 0, 0, -1)
  64. return [formatDate(startOfDay), formatDate(endOfDay)]
  65. }
  66. /**
  67. * 时间日期转换
  68. * @param {dayjs.ConfigType} date 当前时间,new Date() 格式
  69. * @param {string} format 需要转换的时间格式字符串
  70. * @description format 字符串随意,如 `YYYY-mm、YYYY-mm-dd`
  71. * @description format 季度:"YYYY-mm-dd HH:MM:SS QQQQ"
  72. * @description format 星期:"YYYY-mm-dd HH:MM:SS WWW"
  73. * @description format 几周:"YYYY-mm-dd HH:MM:SS ZZZ"
  74. * @description format 季度 + 星期 + 几周:"YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ"
  75. * @returns {string} 返回拼接后的时间字符串
  76. */
  77. import dayjs from 'dayjs';
  78. export function formatDate(date, format = 'YYYY-MM-DD HH:mm:ss') {
  79. // 日期不存在,则返回空
  80. if (!date) {
  81. return '';
  82. }
  83. // 日期存在,则进行格式化
  84. if (format === undefined) {
  85. format = 'YYYY-MM-DD HH:mm:ss';
  86. }
  87. return dayjs(date).format(format);
  88. }
  89. // 设置面试邀请默认时间
  90. export const getInterviewInviteDefaultTime = () => {
  91. const today = new Date()
  92. today.setDate(today.getDate() + 1)
  93. const time = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 10, 0, 0)
  94. return {
  95. time,
  96. timeStamp: time.getTime()
  97. }
  98. }