timeUtil

155 阅读3分钟
时间格式化
export function ParseTime (time: number, cFormat: string): string {
    if (arguments.length === 0 || !time) {
      return '';
    };
    const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
    let date: Date;
    if (typeof time === 'object') {
      date = time;
    } else {
      if (('' + time).length === 10) {
        time = time * 1000;
      };
      date = new Date(time);
    };
    const formatObj: any = {
      y: date.getFullYear(),
      m: date.getMonth() + 1,
      d: date.getDate(),
      h: date.getHours(),
      i: date.getMinutes(),
      s: date.getSeconds(),
      a: date.getDay()
    };
    const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
      let value: any = formatObj[key];
      if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] };
      if (result.length > 0 && value < 10) {
        value = '0' + value
      };
      return value || 0;
    });
    return timeStr;
};


获取当前时间往前推几个月
export function handleForwardMonth(month: number) {
  var today = new Date() //当天
  today.setMonth(today.getMonth()-month)//三个月前,时间戳
  today.toLocaleDateString()//格式化时间
  return new Date(today).getTime();
}
一些常用api
// 获取当月第一天
new Date().setDate(1)
// 获取这个月多少天
new Date().getDate()
// 获取指定月第一天和最后一天
new Date(2022, 1, 1).getDate() // 第一天
new Date(2022, 1, 0).getDate() // 最后一天
其它拓展
export function HandleChatListTime(currentTimer: number, isBackTime = true) {
  if (!currentTimer) { return; }
  if (isToday(currentTimer)) {
      // 是否今天
      return '今天 ' + (isBackTime? ParseTime(currentTimer, '{h}:{i}') : '');
  } else if (isYesterday(currentTimer)) {
      // 是否昨天
      return '昨天 ' + (isBackTime ? ParseTime(currentTimer, '{h}:{i}') : '');
  } else if (isThatYear(currentTimer)) {
      // 是否今年
      return ParseTime(currentTimer, '{m}月{d}日');
  } else {
      return ParseTime(currentTimer, '{y}年{m}月{d}日');
  };
};
// 是否今年
export function isThatYear(time: number) {
    const date = new Date(time).getFullYear();
    const cur = new Date().getFullYear();
    return date === cur;
};
// 是否昨天
export function isYesterday(time: number) {
    const date = new Date();
    const today = handleYearMothDay(date);
    const todayTime = new Date(today).getTime(); // 当前凌晨的时间
    // 昨天凌晨的世界
    const yesterdayTime = new Date(todayTime - 24 * 60 * 60 * 1000).getTime();
    return time < todayTime && yesterdayTime <= time;
};
// 是否今天
export function isToday(time: number) {
    let data = handleYearMothDay(new Date(time));
    let cur = handleYearMothDay(new Date());
    return data === cur;
};
// 返回: `${year}/${month}/${day}`
export function handleYearMothDay(date: any) {
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const day = date.getDate();
    const today = `${year}/${month}/${day}`;
    return today;
};
/* 处理聊天时间_end */
/* 处理倒计时 */
export function handleCountDown(startTime: number, endTime: number) {
  var dStr = '', hStr = '', mStr = '', sStr = '';
  //把剩余时间毫秒数转化为秒
  var times: any = (endTime - startTime) / 1000;
  var d = Math.floor(times / 86400);
  dStr = d < 10 ? "0" + d : d + '';
  //计算小时数 转化为整数
  var h = parseInt((times / 60 / 60 % 24) + '');
  //如果小时数小于 10,要变成 0 + 数字的形式 赋值给盒子
  hStr = h < 10 ? "0" + h : h + '';
  //计算分钟数 转化为整数
  var m = parseInt((times / 60 % 60) + '');
  //如果分钟数小于 10,要变成 0 + 数字的形式 赋值给盒子
  mStr = m < 10 ? "0" + m : m + '';
  //计算描述 转化为整数
  var s = parseInt((times % 60) + '');
  sStr = s < 10 ? "0" + s : s + '';
  // dStr.length > 0 ? `${dStr}天${hStr}:${mStr}:${sStr}` : `${hStr}:${mStr}:${sStr}`
  return `${hStr}:${mStr}:${sStr}`;
};
export function HandleTalkTime(startTime: number, endTime: number) { // 处理通话时间
  var dStr = '', hStr = '', mStr = '', sStr = '';
  //把剩余时间毫秒数转化为秒
  var times: any = (endTime - startTime) / 1000;
  var d = Math.floor(times / 86400);
  dStr = d < 10 ? "0" + d : d + '';
  //计算小时数 转化为整数
  var h = parseInt((times / 60 / 60 % 24) + '');
  //如果小时数小于 10,要变成 0 + 数字的形式 赋值给盒子
  hStr = h < 10 ? "0" + h : h + '';
  //计算分钟数 转化为整数
  var m = parseInt((times / 60 % 60) + '');
  //如果分钟数小于 10,要变成 0 + 数字的形式 赋值给盒子
  mStr = m < 10 ? "0" + m : m + '';
  //计算描述 转化为整数
  var s = parseInt((times % 60) + '');
  sStr = s < 10 ? "0" + s : s + '';
  if (dStr !== '00') {
    return `${dStr}${hStr}${mStr}${sStr}秒`;
  } else if (hStr !== '00') {
    return `${hStr}${mStr}${sStr}秒`;
  } else if (mStr !== '00') {
    return `${mStr}${sStr}秒`;
  } else if (sStr !== '00') {
    return `${sStr}秒`;
  } else {
    return '0秒';
  };
}