首页 > 其他分享 >js--参数归一化-日期格式化函数

js--参数归一化-日期格式化函数

时间:2024-04-16 14:11:37浏览次数:27  
标签:dateInfo 01 return isFillZero -- js 归一化 date formatter

// 参数归一化
//
/*  
日期时间格式化
date:日期时间

isFillZero:是否需要0补位
*/
function formate(date,formater,isFillZero = false){
  formater = _formatNormalize(formater)
  function _isFillZero(value,length){
    if(isFillZero){
       return (value + '').padStart(length,'0')
    }else{
      return value.toString()
    }
  }
  const dateInfo = {
    year:date.getFullYear(),
    month:date.getMonth() + 1,
    day:date.getDate(),
    hour:date.getHours(),
    minute:date.getMinutes(),
    second:date.getSeconds(),
    millisecond:date.getMilliseconds(),
  }
  dateInfo.yyyy = _isFillZero(dateInfo.year,4)
  dateInfo.MM = _isFillZero(dateInfo.month,2)
  dateInfo.dd = _isFillZero(dateInfo.day,2)
  dateInfo.HH = _isFillZero(dateInfo.hour,2)
  dateInfo.mm = _isFillZero(dateInfo.minute,2)
  dateInfo.ss = _isFillZero(dateInfo.second,2)
  console.log(':dateInfo',formater(dateInfo))
  return formater(dateInfo)
}



function _formatNormalize(formatter){
  console.log('formatter',formatter)
  // formatter参数是一个函数
  if(typeof formatter === 'function'){
    return formatter
  }
  // 参数不是字符串,则抛出异常
  if(typeof formatter !== 'string'){
    throw new Error('formatter must be a string or a function')
  }
  return (dateInfo)=>{
    console.log('dateInfo---',dateInfo)
    const { yyyy,MM,dd,HH,mm,ss} = dateInfo
    return formatter.replace(/yyyy/g,yyyy).replace(/MM/g,MM).replace(/dd/g,dd).replace(/HH/g,HH).replace(/mm/g,mm).replace(/ss/g,ss);
  }
}


// 调用日期时间格式化可能的方法
// 格式:2024-1-1
// formate(new Date(),'date')

// // 格式:2024-1-1 14:1:44
// formate(new Date(),'datetime')

// // 格式:2024-01-01
// formate(new Date(),'date',true)

// // 格式:2024-01-01 14:01:44
// formate(new Date(),'datetime',true)

// // 格式:2024年01月01日 14:01:01:336
// formate(new Date(),'yyyy年MM月dd日 HH:mm:ss.ms',true)

formate(new Date('2021/1/1'),(dateInfo)=>{
  const {year} = dateInfo
  const thisYear = new Date().getFullYear();
  if(year < thisYear){
    return `${thisYear - year}年前`;
  }else if(year > thisYear){
    return `${year - thisYear}年后`;
  }else{
    return '今年'
  }
})

 

标签:dateInfo,01,return,isFillZero,--,js,归一化,date,formatter
From: https://www.cnblogs.com/meiyanstar/p/18137980

相关文章

  • 《线性代数的本质》(06-附注2-07)
    06-逆矩阵、列空间、秩与零空间线性方程组:A\(\vec{x}\)=\(\vec{v}\)线性代数的一个作用:帮助我们处理线性方程组。形式:矩阵与向量的乘法。几何意义:寻找一个向量\(\vec{x}\),这个向量在特定的线性变换之后与目标向量\(\vec{v}\)重合。行列式不等于0:有且仅有一个向量再变......
  • 招投标文件泄密?试试这些防泄密绝招
    在企业运营中,招投标过程是一个关键环节,涉及大量敏感和机密数据。一旦招投标文件被泄露,不仅会给企业带来重大损失,还可能影响企业的市场竞争地位。因此,防止招投标文件泄密是企业信息安全管理的重要内容。以下是一些有效的防泄密绝招,帮助企业保护这些关键信息。实施细致的权限管理:......
  • windows远程桌面快速切换回本地桌面方法
    因为工作经常要用到远程主机,所以经常要切换来切换去,碍于比较难多申请一个屏幕专门用作远程桌面,所以想通过快捷键的方式进行快速切换,但是远程桌面全屏下面本机的快捷键和远程桌面的快捷键没办法很好的兼容,以下是探索的几种实现方式快捷键方式远程桌面全屏下面,使用ctrl+alt+......
  • Docker使用Dockerfile部署Fastapi应用
    1#使用官方的Python运行时作为基础镜像2FROMpython:3.9-slim34#设置工作目录5WORKDIR/app67#复制应用程序的依赖文件到工作目录8COPYrequirements.txt.910#安装应用程序的依赖11RUNpipinstall--no-cache-dir-rrequirements.txt12......
  • 一个简单的开源消息中间件 FolkMQ v1.4.2 发布
    功能简表角色功能生产者(客户端)发布消息、定时消息(或叫延时)、顺序消息、可过期消息、事务消息。支持Qos0、Qos1消费者(客户端)订阅、取消订阅。消费-ACK(自动、手动)服务端发布-Confirm、订阅-Confirm、取消订阅-Confirm、派发-Retry、派发-Delayed本......
  • Spring Data JDBC: 映射无ID列的表
    解决方案在model层中,增加一个ID列,但需要加上@Transient,让其映射时做忽略@Data@Table(name="table_name",schema="you_schema")publicclasstableNameVo{@Id@TransientprivateLongid;@Column("column1")privateStringcolumn......
  • trl for RLHF
    ......
  • 密码学中的RSA算法与椭圆曲线算法
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。在数字安全领域,加密算法扮演着至关重要的角色。它们确保了信息的机密性、完整性和不可否认性。RSA算法和椭圆曲线算法(ECC)是当前最广泛使用的两......
  • Excel提取数字公式
    =LEFT(TEXTJOIN("",TRUE,FILTER(MID(C31,SEQUENCE(LEN(C31)),1),ISNUMBER(VALUE(MID(C31,SEQUENCE(LEN(C31)),1))))),3)假设你要从单元格A1中提取连续数字,你可以使用以下公式:excelCopyCode=TEXTJOIN("",TRUE,FILTER(MID(A1,ROW(INDIRECT("1:"&LEN......
  • 使用 Docker 部署 SurveyKing 调查问卷系统
    1)SurveyKing介绍SurveyKing是一款功能强大、操作简便的开源问卷系统。它不仅满足了用户对问卷调查的基本需求,还提供了丰富的逻辑设置和灵活的问题设置,使得问卷制作更加智能化和个性化。此外,SurveyKing还具有快速部署和安全可靠等优点,使得用户能够轻松高效地开展问卷调查工作......