反编译获取的一些 B 站工具方法

0 条回复
32 次浏览

formatTime.js

复制
import getDayStartTime from './getDayStartTime';
import formatToDate from './formatToDate';

/**
 * 获取事件发生到现在的可读时间
 * @param {number} time 事件发生时时间戳
 * @param {{
 * justNow: string;
 * minutesAgo: string;
 * hoursAgo: string;
 * yesterday : string;
 * future: string;
 * }} timeNames
 * @returns
 * 1 分钟以内 => 刚刚
 * [1 分钟,60 分钟) => n 分钟前(例:8 分钟前)
 * [1 小时,24 小时) => n 小时前(例: 8 小时前)
 * 其他 => 年-月-日(例: 2016-08-05)
 */
function formatTime(time, timeNames) {
  var date = formatToDate(time);
  if (!date) return '';
  if (!timeNames) timeNames = {};
  var justNow = timeNames.justNow || '刚刚';
  var minutesAgo = timeNames.minutesAgo || '分钟前';
  var hoursAgo = timeNames.hoursAgo || '小时前';
  var yesterday = timeNames.yesterday || '昨天';
  var future = timeNames.future || '';
  var now = Date.now();
  time = date.valueOf();
  if (now < time) return future;
  if (now - time <= 6e4) return justNow;

  if (now - time < 36e5) {
    return Math.floor((now - time) / 6e4) + minutesAgo;
  }

  if (now - time < 864e5) {
    return Math.floor((now - time) / 36e5) + hoursAgo;
  }

  if (getDayStartTime(new Date()) - time < 864e5) {
    return yesterday;
  }

  var y = date.getFullYear();
  var m = "0".concat(date.getMonth() + 1).substr(-2);
  var d = "0".concat(date.getDate()).substr(-2);

  if (y === new Date().getFullYear()) {
    return "".concat(m, "-").concat(d);
  }

  return "".concat(y, "-").concat(m, "-").concat(d);
}

export default formatTime;

isUdf.js

复制
/**
 * 判断一个变量是否为 undefined
 * @param {*} value
 * @returns {boolean}
 */
function isUdf(value) {
  return value === undefined;
}

export default isUdf;

getDayStartTime.js

复制
import isUdf from './isUdf';
import formatToDate from './formatToDate';

/**
 * 获取一天的开始时间,00 点 00 分 00 秒时间戳
 * @param {Date|number|string} time
 * @returns {number}
 *
 * getDayStartTime('2021-10-01'); // => 1633017600000
 */
function getDayStartTime(time) {
  if (isUdf(time)) time = new Date();
  var date = formatToDate(time);
  if (!date) return NaN;
  return date.setHours(0, 0, 0, 0);
}

export default getDayStartTime;

formatToDate.js

复制
/**
 * 格式化时间参数为日期对象
 * @param {Date|number|string} time
 * @returns {Date}
 *
 * formatToDate(new Date); // => Date
 * formatToDate('2021-10'); // => Date
 * formatToDate(1636222480480); // => Date
 */
function formatToDate(time) {
  var date = time instanceof Date ? time : new Date(time);
  var dateTime = date.getTime();
  if (!dateTime && dateTime !== 0) return null;
  return date;
}

export default formatToDate;

发表一个评论

R保持