场景一:根据格式化范本返回符合格式要求的日期字符串

 /*** * @param {*} date 日期类型字符串或时间戳* @param {*} formatString 格式化范本,如 yyyy-MM-dd hh:mm:ss* @return 返回符合格式要求的日期字符串*/function formatDate(date, formatString) {if (!formatString) { // 无值则取默认值 yyyy-MM-dd hh:mm:ssformatString = 'yyyy-MM-dd hh:mm:ss'}if (typeof date == 'string') {date = date.replace(/\-/g, '/') // 兼容ios系统}let mydate = new Date(date)let dateObj = {y: mydate.getFullYear(),m: (mydate.getMonth() + 1 < 10) ? '0' + (mydate.getMonth() + 1) : mydate.getMonth() + 1,d: (mydate.getDate() < 10) ? '0' + mydate.getDate() : mydate.getDate(),h: (mydate.getHours() < 10) ? '0' + mydate.getHours() : mydate.getHours(),min: (mydate.getMinutes() < 10) ? '0' + mydate.getMinutes() : mydate.getMinutes(),s: (mydate.getSeconds() < 10) ? '0' + mydate.getSeconds() : mydate.getSeconds()}let res = formatString.replace(/yyyy/g, dateObj.y)res = res.replace(/MM/g, dateObj.m)res = res.replace(/dd/g, dateObj.d)res = res.replace(/hh/g, dateObj.h)res = res.replace(/mm/g, dateObj.min)res = res.replace(/ss/g, dateObj.s)return res}

场景二:根据日期返回基于当前时间的中文描述:语义化的时间描述:'n月前'/'n周前'/'n天前'/'n小时前'/'n分钟前'/'刚刚'

 /*** * @param {*} date 日期类型字符串或时间戳* @return 返回日期基于当前时间的中文描述:语义化的时间描述:'n月前'/'n周前'/'n天前'/'n小时前'/'n分钟前'/'刚刚'*/function formatDateToChineseDesc(date) {let mydate = Math.round(new Date(date).getTime() / 1000)let min = 60,hour = min * 60,day = hour * 24,month = day * 30,year = month * 12let diffVal = Math.round(new Date().getTime() / 1000) - mydatelet diffMonth = diffVal / month,diffWeek = diffVal / (7 * day),diffDay = diffVal / day,diffHour = diffVal / hour,diffMinute = diffVal / minif (diffMonth > 3) {mydate = new Date(date)return `${mydate.getFullYear()}-${mydate.getMonth() + 1}-${mydate.getDate()}`}if (diffMonth > 1) {return `${parseInt(diffMonth)}月前`}if (diffWeek > 1) {return `${parseInt(diffWeek)}周前`}if (diffDay > 1) {return `${parseInt(diffDay)}天前`}if (diffHour > 1) {return `${parseInt(diffHour)}小时前`}if (diffMinute > 1) {return `${parseInt(diffMinute)}分钟前`}return '刚刚'}

判断目标日期是否处于活动日期范围内(开始时间与结束时间)

 /**** @param {*} startDate 开始时间 endDate 结束时间 targetDate 目标时间* @return 返回是否在时间区间 true or false**/function targetDateInDateBetwen(startDate, endDate, targetDate) {//如果时间格式是正确的,那下面这一步转化时间格式就可以不用了if (typeof startDate == 'string') {startDate = startDate.replace(/-/g, "/")}if (typeof endDate == 'string') {endDate = endDate.replace(/-/g, "/")}if (typeof targetDate == 'string') {targetDate = targetDate.replace(/-/g, "/")}var dateBegin = new Date(startDate);var dateEnd = new Date(endDate);var dateTarget = new Date(targetDate);var beginDiff = dateTarget.getTime() - dateBegin.getTime(); //时间差的毫秒数var beginDayDiff = Math.floor(beginDiff / (24 * 3600 * 1000)); //计算出相差天数var endDiff = dateEnd.getTime() - dateTarget.getTime(); //时间差的毫秒数var endDayDiff = Math.floor(endDiff / (24 * 3600 * 1000)); //计算出相差天数if (endDayDiff < 0) {//已过期return false;}if (beginDayDiff < 0) {//没到开始时间return false;}if (endDayDiff == 0) {return true;}if (beginDayDiff == 0) {return true;}return true;}

根据活动结束时间计算距离活动结束仅剩x天x小时x分钟

 /*** * @param {*} endTime 活动结束时间戳* @return 返回xx天xx小时xx分钟,用于显示距离活动结束仅剩xxxxxxx的场景 */function formatDate2EndText(endTime) {if (typeof endTime == 'string') {endTime = endTime.replace(/\-/g, '/')}let mydate = Math.round(new Date(endTime).getTime() / 1000)let diffVal = mydate - Math.round(new Date().getTime() / 1000)if (diffVal < 0) return ''let min = 60,hour = min * 60,day = hour * 24let diffDay = parseInt(diffVal / day)let diffHour = parseInt((diffVal - diffDay * day) / hour)let diffMin = parseInt((diffVal - diffDay * day - diffHour * hour) / min)let str = ''if (diffDay > 0) str += `${diffDay}天`if (diffHour > 0) str += `${diffHour}小时`if (diffMin > 0) str += `${diffMin}分钟`return str}

一般用于显示阅读量/点赞量的显示,比如抖音的场景  338.6w 点赞

 /*** * @param {*} num 具体数字* @param {*} languageType  'cn'返回中文'万'字,'en'返回英文w。默认使用英文w* @return 1万内显示具体数字,10万内精确到小数点后1位,大于10万显示X万+*/function formatNumber(num, languageType) {/**  */if (!languageType) {languageType = 'en'}if (num < 10000) return numif (num > 100000) {let n = parseInt(num / 10000)return n + (languageType == 'cn' ? '万+' : 'w+')}let wan = num / 10000let max = parseInt(wan)let min = parseInt((num - max * 10000) / 1000)return `${max}.${min}${languageType == 'cn'?'万':'w'}`}

常用的时间戳格式化的应用场景相关推荐

  1. 常用php时间戳格式化与转换

    2019独角兽企业重金招聘Python工程师标准>>> <?php echo "date()函数输出格式化日期:<br />"; // 常用 e ...

  2. postgresql 时间戳格式化

    平时总记不住pg里面怎么将时间戳格式化,记录常用的格式化时间 -- 年 select to_char(to_timestamp(1608018517000 / 1000),'yyyy'); -- 年- ...

  3. PG库对时间戳格式化

    前言 公司数据库采用时间戳的格式存储, 这导致把时间返回给前端,前端还要格式化.有些业务需要精确到天,有些需要精确到分,有些精确到秒, 这样导致时间格式不统一. 接下来列列举常用的时间格式化案例 数据 ...

  4. 如何利用pandas将时间戳格式化日期字符串呢?

    如何利用pandas将时间戳格式化日期字符串呢? 例如:将 1357295797 转为 2013-01-04 10:36:37 #!/usr/bin/python # -*- coding: UTF- ...

  5. 在线时间戳格式化转换工具

    在线时间戳格式化转换工具 在线时间戳格式化转换工具 本工具支持在时间和时间戳之间相互转换,默认时间参考的是服务器时间 Unix时间戳(Unix timestamp),或称Unix时间(Unix tim ...

  6. 【HTML 教程系列第 11 篇】HTML 中常用的文本格式化标签

    这是[HTML 教程系列第 11 篇],如果觉得有用的话,欢迎关注专栏. 在网页中,有时需要为文字设置粗体.斜体.下划线或上下标等效果,这时就需要用到 HTML 中的文本格式化标签(也叫文本标签),常 ...

  7. Helm模板常用语法介绍与简单应用场景

    Helm模板常用语法介绍与简单应用场景 文章目录 Helm模板常用语法介绍与简单应用场景 什么是Helm _help.tpl子模版 应用场景 预定义对象 关于变量 关键字及应用 函数 流程与控制 什么 ...

  8. python 时间戳格式化输出

    在 Python 中,可以使用 time 模块中的 strftime 函数来格式化时间戳. 下面是一个例子,展示了如何将时间戳格式化为 YYYY-MM-DD 的格式: importtimetimest ...

  9. js 时间戳 格式化 年月日

    js 时间戳 格式化 年月日 function currentTime(timestamp){var date = new Date(timestamp);var Y = date.getFullYe ...

最新文章

  1. 深入理解JavaScript类数组
  2. python编程入门与案例详解pdf-Python入门之三角函数sin()函数实例详解
  3. 前端学习(3286):Aop
  4. xml转svg_C# Excel 转PDF/图片/HTML/TXT/XML/XPS/CSV/ODS/SVG/EMF
  5. 前谷歌技术主管亲述:程序员请避开这几大雷区
  6. 使用ie浏览器设置Domain无法使用session的问题解决办法
  7. Codeforces #364 DIV2
  8. Java 8 Stream
  9. 微信开发者工具下载安装教程
  10. 生物信息学初学——山大公开课笔记
  11. 上课学计算机的周记,计算机实习周记20篇
  12. UnityECS-初识
  13. webshell一句话
  14. select函数介绍
  15. 如何给卫生间的墙砖打孔,避免瓷砖开裂?
  16. DVWA--XSS(Reflected)(全难度)
  17. dataTables国际化
  18. 【非参数统计】2.1广义符号检验(R语言)
  19. 1.贴片电阻:介绍与测量
  20. 杜比实验室透露Windows8将整合杜比音效技术

热门文章

  1. JavaEE概述以及总结心得
  2. 飞桨“国货之光”助力青年学者科研,百度与CCF联合发布松果基金
  3. 解析数据帧 c语言编写
  4. 艾美捷支原体检测试剂盒基本参数和样本数据分析
  5. 试用74LS194加必要的门电路实现4位环形计数器(要求能自启动, 电路越简单越好). 要求它的有效循环状态Q0Q1Q2Q3为 1000-0100-0010-0001-1000
  6. 区分按字寻址和按字节寻址
  7. java计算机毕业设计远程教育系统源码+系统+mysql数据库+lw文档
  8. 自定义 ellipsize 后缀的 TextView
  9. 云原生安全专家观察:容器云安全现状和发展趋势
  10. 踏入机器学习半只脚记录(一)