收藏一个日期时间处理的功能函数文件

/**
 * 时间格式化函数, 按照指定格式化字符串格式化传入时间
 *
 * @param {Date} time 需要格式化的时间
 * @param {String} fmStr 定义时间的格式
 * 		yyyy: 代表四位数年份
 * 		  yy: 代表两位数年份
 * 		  mm: 代表月份(小于10时补0)
 * 		  dd: 代表日期(小于10时补0)
 * 		  hh: 代表小时(小于10时补0)
 * 		  hh: 代表小时(小于10时补0)
 * 		  MM: 代表分钟(小于10时补0)
 * 		  ss: 代表秒数(小于10时补0)
 * 		 SSS: 代表毫秒数
 * 		   w: 代表周几(数字)
 * 		   W: 代表周几(中文)
 * 		  ww: 代表周几(英文)
 * @returns {String} 返回格式化的时间
 */
//"yyyy-mm-dd hh:MM:ss"
function timeFormat(time, fmStr) {
  const weekCN = '一二三四五六日';
  const weekEN = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

  let year = time.getFullYear();
  let month = time.getMonth() + 1;
  let day = time.getDate();
  let hours = time.getHours();
  let minutes = time.getMinutes();
  let seconds = time.getSeconds();
  let milliSeconds = time.getMilliseconds();
  let week = time.getDay();

  month = month >= 10 ? month : ('0' + month);
  day = day >= 10 ? day : ('0' + day);
  hours = hours >= 10 ? hours : ('0' + hours);
  minutes = minutes >= 10 ? minutes : ('0' + minutes);
  seconds = seconds >= 10 ? seconds : ('0' + seconds);

  fmStr = fmStr || 'yyyy-mm-dd hh:MM:ss';

  if (fmStr.indexOf('yyyy') !== -1) {
    fmStr = fmStr.replace('yyyy', year);
  } else {
    fmStr = fmStr.replace('yy', (year + '').slice(2));
  }
  fmStr = fmStr.replace('mm', month);
  fmStr = fmStr.replace('dd', day);
  fmStr = fmStr.replace('hh', hours);
  fmStr = fmStr.replace('MM', minutes);
  fmStr = fmStr.replace('ss', seconds);
  fmStr = fmStr.replace('SSS', milliSeconds);
  fmStr = fmStr.replace('W', weekCN[week - 1]);
  fmStr = fmStr.replace('ww', weekEN[week - 1]);
  fmStr = fmStr.replace('w', week);

  return fmStr;
}

// let time = new Date();
// let fm = time.format('yyyy-mm-dd');

export default timeFormat;

//返回整周的日期数组,
// @date某一天的日期,不传是当天;
// @monday:ture以周一开始,false以周日开始
// @fmStr: 格式化字符串,如'yyyy-mm-dd',默认返回时间戳
function fullWeek(date, monday, fmStr) {
  let time = date ? new Date(date) : new Date(); //当前日期
  let timesStamp = time.getTime();//获取时间戳
  let currentDay = time.getDay();//获取周几 0~6,周日~周六
  let fixNum = monday ? 6 : 7;//用来修正周日开始还是周一开始
  let dates = [];
  for (let i = 0; i < 7; i++) {
    //24 * 60 * 60 * 1000 = 86400000;
    let t = new Date(timesStamp + 86400000 * (i - (currentDay + fixNum) % 7));
    if (fmStr) {
      t = timeFormat(t, fmStr);
    } else {
      t = t.getTime();//默认返回13位时间戳
    }
    dates.push(t);
  }
  return dates;
}

//返回日期当月的起始日期和结束日期
// @date某一天的日期,不传是当天;
// @fmStr: 格式化字符串,如'yyyy-mm-dd',默认返回时间戳
function monthStartEnd(date, fmStr) {
  let now = new Date(); //当前日期
  if (date) {
    now = new Date(date)
  }
  let nowMonth = now.getMonth(); //当前月
  let nowYear = now.getFullYear(); //当前年
  //本月的开始时间
  let monthStartDate = new Date(nowYear, nowMonth, 1);
  //本月的结束时间
  let monthEndDate = new Date(nowYear, nowMonth + 1, 0);
  let timeStart = '';
  let timeEnd = '';
  if (fmStr) {
    timeStart = timeFormat(monthStartDate, fmStr);
    timeEnd = timeFormat(monthEndDate, fmStr);
  } else {
    timeStart = monthStartDate.getTime();
    timeEnd = monthEndDate.getTime();
  }
  return [timeStart, timeEnd]
}

//获取某天0点的时间戳 @time 可以转换为Date格式的时间,不传就是今天
function zeroTimeStp(time) {
  let date = time ? new Date(time) : new Date();
  return new Date(date.setHours(0, 0, 0, 0)).getTime()
}
export { fullWeek, monthStartEnd, zeroTimeStp };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值