methods.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // 返回不重复的随机生成的8位数字
  2. export function getRandomNumber() {
  3. const min = 10000000;
  4. const max = 99999999; // 生成一个8位数的随机数
  5. return Math.floor(Math.random() * (max - min + 1)) + min;
  6. }
  7. // 返回指定时间的前后半小时的毫秒级时间戳
  8. export function getTimestampsBeforeAndAfter(dateString, format = 'yyyy-MM-dd HH:mm:ss') {
  9. // 创建一个Date对象
  10. const date = new Date(dateString);
  11. // 半小时的毫秒数
  12. const halfHourMilliseconds = 30 * 60 * 1000;
  13. // 获取指定时间前半小时的Date对象
  14. const beforeHalfHour = new Date(date.getTime() - halfHourMilliseconds);
  15. // 获取指定时间后半小时的Date对象
  16. const afterHalfHour = new Date(date.getTime() + halfHourMilliseconds);
  17. // 将Date对象转换为毫秒级时间戳
  18. const beforeHalfHourTimestamp = beforeHalfHour.getTime();
  19. const afterHalfHourTimestamp = afterHalfHour.getTime();
  20. // // 将Date对象转换为秒级时间戳
  21. // const beforeHalfHourTimestamp = Math.round(beforeHalfHour.getTime() / 1000);
  22. // const afterHalfHourTimestamp = Math.round(afterHalfHour.getTime() / 1000);
  23. // 返回时间戳数组
  24. return [beforeHalfHourTimestamp, afterHalfHourTimestamp];
  25. }
  26. // 指定时间范围内按指定间隔的时间数组
  27. export function getTimeArrayByInterval(startTimeString, endTimeString, intervalInMinutes = 1, format = 'HH:mm') {
  28. // 创建开始和结束时间的Date对象
  29. const startTime = new Date(startTimeString);
  30. const endTime = new Date(endTimeString);
  31. // 用于存储格式化时间的数组
  32. const timeArray = [];
  33. // 设置循环的当前时间
  34. let currentTime = new Date(startTime.getTime());
  35. // 确保结束时间大于开始时间
  36. if (endTime <= startTime) {
  37. throw new Error('结束时间必须大于开始时间');
  38. }
  39. // 确保间隔是正整数
  40. if (Number.isInteger(intervalInMinutes) && intervalInMinutes > 0) {
  41. // 遍历开始时间和结束时间之间的每个指定间隔
  42. while (currentTime <= endTime) {
  43. // 格式化当前时间
  44. const formattedTime = formatTime(currentTime, format);
  45. timeArray.push(formattedTime);
  46. // 增加指定的间隔分钟数
  47. currentTime.setMinutes(currentTime.getMinutes() + intervalInMinutes);
  48. // 如果增加间隔后超过了结束时间,则退出循环
  49. if (currentTime > endTime) {
  50. break;
  51. }
  52. }
  53. } else {
  54. throw new Error('间隔时间必须是正整数');
  55. }
  56. // 返回格式化时间数组
  57. return timeArray;
  58. }
  59. // 辅助函数,用于格式化Date对象为指定格式的时间字符串
  60. function formatTime(date, format = 'HH:mm') {
  61. const pad = (n) => (n < 10 ? '0' + n : n);
  62. const hours = pad(date.getHours());
  63. const minutes = pad(date.getMinutes());
  64. return format
  65. .replace('HH', hours)
  66. .replace('mm', minutes);
  67. }