dateFormat.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * @Author: ymy
  3. * @Date: 2020-08-13 17:42:52
  4. * @LastEditors: ymy
  5. * @LastEditTime: 2020-10-10 16:09:09
  6. * @Description: file content
  7. */
  8. export default function Format(date:any,fmt:any){
  9. if(!date) return ''
  10. if(!(date instanceof Date)){
  11. date=new Date(date)
  12. }
  13. const o:any = {
  14. "M+" : date.getMonth()+1, //月份
  15. "d+" : date.getDate(), //日
  16. "H+" : date.getHours(), //小时
  17. "m+" : date.getMinutes(), //分
  18. "s+" : date.getSeconds(), //秒
  19. "q+" : Math.floor((date.getMonth()+3)/3), //季度
  20. "S" : date.getMilliseconds() //毫秒
  21. }
  22. if(!fmt){
  23. // fmt="yyyy-MM-dd HH:mm:ss"
  24. fmt="yyyy-MM-dd"
  25. }
  26. if(fmt == 'week'){
  27. //本年的第一天
  28. const beginDate = new Date(date.getFullYear(), 0, 1);
  29. //星期从0-6,0代表星期天,6代表星期六
  30. let endWeek = date.getDay();
  31. if (endWeek == 0) endWeek = 7;
  32. let beginWeek = beginDate.getDay();
  33. if (beginWeek == 0) beginWeek = 7;
  34. //计算两个日期的天数差
  35. const millisDiff = date.getTime() - beginDate.getTime();
  36. const dayDiff = Math.floor(( millisDiff + (beginWeek - endWeek) * (24 * 60 * 60 * 1000)) / 86400000);
  37. // return date.getFullYear() +' 年第 ' + Math.ceil(dayDiff / 7) + 1 + ' 周';
  38. return Math.ceil(dayDiff / 7) + 1
  39. }else{
  40. if(/(y+)/.test(fmt))
  41. fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length))
  42. for(const k in o)
  43. if(new RegExp("("+ k +")").test(fmt))
  44. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  45. return fmt;
  46. }
  47. }