首页 > 其他分享 >前端常用方法分享, 用户输入钱, 转化成分, 类型判断, 时间格式化

前端常用方法分享, 用户输入钱, 转化成分, 类型判断, 时间格式化

时间:2023-09-06 11:12:58浏览次数:34  
标签:console log 前端 new Date 格式化 分享 type const

钱转化成分

        // 转换成分         function toCent(numStr) {             const reg = /(^(?=.*?[1-9].*?)0\.\d+$)|(^[1-9][0-9]*(\.\d{1,2})?$)/             if (!reg.test(numStr)) {                 throw new Error('input error. eg: 0.5 or 6 or 1.1 or 0.03')                 return 0             }             // 开始转换             const index = numStr.indexOf('.')             if (index < 0) {                 // 输入的是整数                 return parseInt(numStr * 100)             }             const tempArr = numStr.split('.')             const integer = parseInt(tempArr[0] * 100)             const cent = parseInt(tempArr[1].padEnd(2, '0'))             return integer + cent         }
        console.log(toCent('0.5'))  // 50
        console.log(toCent('6'))  // 600
        console.log(toCent('1.1')) // 110
        console.log(toCent('0.03')) // 3

 

获取任意类型的类型

        function type(any) {
            const typeStr = Object.prototype.toString.call(any)
            const reg = /\s[a-zA-Z]+/g
            return typeStr.match(reg)[0].replace(/\s/g, '')
        }
        console.log(type(null))  // Null
        console.log(type(3.14)) // Number
        console.log(type(520)) // Number
        console.log(type('hello world')) // String
        console.log(type([1, 2])) // Array
        console.log(type({ sex: '男' })) // Object
        console.log(type(undefined)) // Undefined
        console.log(type(NaN))  // Number  (比较特殊)
        console.log(type(true))  // Boolean
        console.log(type(() => { }))  // Function

        class A { }
        console.log(type(A))  // Function

 

时间格式转化

        function fmt(opt = {}) {
            const { str = 'YYYY-MM-DD hh:mm:ss', date = new Date(), cp = 0 } = opt
            const t = date.toString().replace(/-/g, '/')
            const nt = +new Date(t) + cp * 24 * 60 * 60 * 1000
            const YYYY = new Date(nt).getFullYear()
            const MM = (new Date(nt).getMonth() + 1 + '').padStart(2, '0')
            const DD = (new Date(nt).getDate() + '').padStart(2, '0')
            const hh = (new Date(nt).getHours() + '').padStart(2, '0')
            const mm = (new Date(nt).getMinutes() + '').padStart(2, '0')
            const ss = (new Date(nt).getSeconds() + '').padStart(2, '0')
            return str.replace('YYYY', YYYY).replace('MM', MM).replace('DD', DD).replace('hh', hh).replace('mm', mm).replace('ss', ss)
        }
        console.log(fmt())  // 2023-09-06 10:56:09
        console.log(fmt({ str: 'YYYY-MM-DD' }))  // 2023-09-06
        console.log(fmt({ str: 'MM-DD hh:mm' }))  // 09-06 10:56
        console.log(fmt({ date: '2020-12-12' }))  // 2020-12-12 00:00:00
        console.log(fmt({ date: '2020-12-12', cp: 365 }))  // 2021-12-12 00:00:00
        console.log(new Date())  // Wed Sep 06 2023 10:58:20 GMT+0800 (中国标准时间)
        console.log(fmt({ cp: -1 }))  // 2023-09-05 10:58:20

 

 

获取某一个月有多少天

语法要点: new Date(2023, 2, 0)  // 28

        // 获取一个月有多少天  2023-08
        function getDays(str) {
            const reg = /^\d{4}-\d{2}$/
            if (!reg.test(str)) {
                throw new Error('getDays function need params format YYYY-MM eg: 2023-08')
                return
            }
            const yyyy = str.split('-')[0] / 1
            const mm = str.split('-')[1] / 1
            return new Date(yyyy, mm, 0).getDate()
        }

        const days = getDays('2023-02')
        console.log(days) // 28

 

标签:console,log,前端,new,Date,格式化,分享,type,const
From: https://www.cnblogs.com/fmg0224/p/17681747.html

相关文章

  • 482. 密钥格式化
    链接https://leetcode.cn/problems/license-key-formatting/description/思路字符串处理,没啥好说的...代码classSolution:deflicenseKeyFormatting(self,s:str,k:int)->str:valid_len,valid_s=self.get_length(s)first_len=valid_len%......
  • 【校招VIP】前端算法考察之链表算法
    考点介绍:链表是一种物理存储结构上非连续的数据结构,数据的逻辑顺序是通过链表中的指针链接次序实现相互勾连。链表相对数组而言有很多不同之处,在特定场景下能发挥独特的优势。例如链表的插入和删除操作比数组效率高,数组需要改变其他元素的位置,而链表只需要改变指针的指向。......
  • 学习 vue.js 3.0 中遇到的前端相关网站汇总
    序章最近学习vue.js,期间遇到不少相关网站,特整理于本文。 学习教程菜鸟教程https://www.runoob.com/ 阮一峰:Flex布局教程语法:https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html实例:https://www.ruanyifeng.com/blog/2015/07/flex-examples.html W3Csch......
  • ES6前端技术之第二讲 let和const命令
    第二讲let和const命令前人栽树后人乘凉,前人挖坑后人遭殃!!!JS是弱类型语言,当初设计者为了使用的便捷,开发人员开心,留下了不少坑。请看JS系列坑之技术细节:var关键字挖的坑1.可以重复声明变量vara=88;vara="张老师";console.log(a);填坑:ES,let关键字......
  • 前端编程题(一):数组
    手写数组常见方法//数组mapArray.prototype.myMap=function(callback){constarr=[]for(leti=0;i<this.length;i++){arr[i]=callback(this[i],i);}returnarr;}//数组filterArray.prototype.myFilter=function(callback){const......
  • 前端实现轮询
    /****@paramcallback需要轮询的函数*@paraminterval轮询的间隔时间*@returns*/exportfunctionpollFn(callback,interval=1000){lettimerId;//是否停止轮询letisStop=false;//轮询请求constpollFetch=async()=>{awaitcall......
  • 购物车的实现 前端按钮 , 一次就是加一次数量吧
    后端实现都是查询list集合,查询list集合条件是userID物品id,list集合其实查询出的就是一个 因为物品id是唯一的。。,另外思想有点像批量删除,和单个删除有点类似用in来实现 in里面传入的也是list集合,非常的类似看了淘宝,美团外卖,多多买菜的基本都是查询list  list搞定......
  • 前端 文件流下载blob
    1.axios请求携带 responseType:'blob'exportfunctiongetCreateReport(id){returnrequest({url:`${apiPrefix}/bus/proposal/evaluation/${id}`,method:'Get',responseType:'blob'})}2.编写下载方法//blob文件下载expor......
  • 从零开始一个vue3前端项目day04-头部导航篇
    在实际开发项目中通常会把头部导航栏写成一个通用组件,这里来具体说一下实现思路1:front-header组件就是我们的头部导航栏,路由我们已经配置好了,把每个导航的首页路径,配置成navList(包含name,path),这样就通过遍历navList就能写出一个首页导航组件 2:导航的选中状态实现,不仅仅是切......
  • 前端项目环境搭建笔记
    @目录简介一、vue3组件通信方式1.1props1.2自定义事件1.2.1原生DOM事件1.2.2自定义事件1.3全局事件总线1.4v-model1.5useAttrs1.6ref与$parent1.7provide与inject1.8pinia1.9slot二、搭建后台管理系统模板2.1项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint......