记一个常用的时间、日期 格式化方法

方法里可能有其他的逻辑,我没有删去多余的 ,仅供参考

1、对日期进行格式化

/*** 对日期进行格式化, 和C#大致一致 默认yyyy-MM-dd HH:mm:ss* 可不带参数 一个日期参数 或一个格式化参数* @param date 要格式化的日期* @param format 进行格式化的模式字符串*     支持的模式字母有:*     y:年,*     M:年中的月份(1-12),*     d:月份中的天(1-31),*     H:小时(0-23),*     h:小时(0-11),*     m:分(0-59),*     s:秒(0-59),*     f:毫秒(0-999),*     q:季度(1-4)* @return String* @author adswads@gmail.com*/
export function dateFormat(date?: any, format?: string): string {/*** 返回字符串 为n个char构成* @param char 重复的字符* @param count 次数* @return String* @author adswads@gmail.com*/function charString(char: string, count: number): string {let str = ''while (count--) {str += char}return str}// 毫秒时间转为Dateif (date != undefined && typeof date == 'number') {date = new Date(date)}//无参数if (date == undefined && format == undefined) {date = new Date()format = 'yyyy-MM-dd HH:mm:ss'}//无日期else if (typeof date == 'string') {format = datedate = new Date()}//无格式化参数else if (format === undefined) {format = 'yyyy-MM-dd HH:mm:ss'} else {}//没有分隔符的特殊处理const map = {y: date.getFullYear() + '', //年份M: date.getMonth() + 1 + '', //月份d: date.getDate() + '', //日H: date.getHours(), //小时 24m: date.getMinutes() + '', //分s: date.getSeconds() + '', //秒q: Math.floor((date.getMonth() + 3) / 3) + '', //季度f: date.getMilliseconds() + '' //毫秒}//小时 12if (map['H'] > 12) {map['h'] = map['H'] - 12 + ''} else {map['h'] = map['H'] + ''}map['H'] += ''const reg = 'yMdHhmsqf'let all = '',str = ''for (let i = 0, n = 0; i < reg.length; i++) {n = format.indexOf(reg[i])if (n < 0) {continue}all = ''for (; n < format.length; n++) {if (format[n] != reg[i]) {break}all += reg[i]}if (all.length > 0) {if (all.length == map[reg[i]].length) {str = map[reg[i]]} else if (all.length > map[reg[i]].length) {if (reg[i] == 'f') {str = map[reg[i]] + charString('0', all.length - map[reg[i]].length)} else {str = charString('0', all.length - map[reg[i]].length) + map[reg[i]]}} else {switch (reg[i]) {case 'y':str = map[reg[i]].substr(map[reg[i]].length - all.length)breakcase 'f':str = map[reg[i]].substr(0, all.length)breakdefault:str = map[reg[i]]break}}format = format.replace(all, str)}}return format
}

2、格式化时间戳(Jun.02 08:54)

const MONTH_ABBR =['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec']
export function formatEnDate(value: number) {if (!value) {return ''}const date: Date = new Date(value)const d = {Y: date.getFullYear(),M: MONTH_ABBR[date.getMonth()],D: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),h: date.getHours() < 10 ? '0' + date.getHours() : date.getHours(),m: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()}return d.M + '.' + d.D + ' ' + d.h + ':' + d.m
}

3、格式化时间戳(YYYY/MM/DD hh:mm:ss)

/*** 格式化时间戳* 输入结果如 YYYY/MM/DD hh:mm:ss* @param milliseconds*/
export function formatMonthYearDate(value: number) {if (!value) {return ''}const date: Date = new Date(value)const d = {Y: date.getFullYear(),M: date.getMonth(),D: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),h: date.getHours() < 10 ? '0' + date.getHours() : date.getHours(),m: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(),s: date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()}return d.Y + '/' + d.M + '/' + d.D + ' ' + d.h + ':' + d.m + ':' + d.s
}
export const formatDate = (time: number) => {const date = new Date(time)const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()const hour = date.getHours()const minute = date.getMinutes()const second = date.getSeconds()return (year +'/' +month.toString().padStart(2, '0') +'/' +day.toString().padStart(2, '0') +' ' +hour.toString().padStart(2, '0') +':' +minute.toString().padStart(2, '0') +':' +second.toString().padStart(2, '0'))
}

4、格式化时间戳(hh:mm:ss)

export function getTimeStr(timestamp: number): string {if (timestamp) {const date = new Date(timestamp)const hours = ('' + date.getHours()).padStart(2, '0')const minutes = ('' + date.getMinutes()).padStart(2, '0')const seconds = ('' + date.getSeconds()).padStart(2, '0')return `${hours}:${minutes}:${seconds}`} else {return ''}
}

5、毫秒数 转 HH:MM:SS

export function timeToString(time: number): string {const t = time / 1000const hour = parseInt('' + t / 3600)const min = parseInt('' + (t % 3600) / 60)const se = parseInt('' + ((t % 3600) % 60))const hh = hour.toString().padStart(2, '0')const mm = min.toString().padStart(2, '0')const ss = se.toString().padStart(2, '0')return `${hh}:${mm}:${ss}`
}

 6、当前时间与输入时间之间的差值

/*** 计算当前时间与输入时间之间的差值* @param milliseconds*/
export function formatCountdownRule(sendTime: number) {// 当前时间// const sendTime = new Date('2023.06.01 15:00:00').getTime()const timeDiff = sendTime - new Date().getTime() //时间差的毫秒数const isNegative = timeDiff < 0 ? true : false// 计算出总秒数和剩余毫秒数const totalSeconds = Math.floor(Math.abs(timeDiff) / 1000)// 计算出总分钟数和剩余秒数const totalMinutes = Math.floor(totalSeconds / 60)// const remainingSeconds = totalSeconds % 60// 计算出总小时数和剩余分钟数const totalHours = Math.floor(totalMinutes / 60)const remainingMinutes = totalMinutes % 60// 计算出总天数和剩余小时数const totalDays = Math.floor(totalHours / 24)const remainingHours = totalHours % 24if (isNegative) {//   剩余时间为负数 显示红色if (totalDays > 0) {return { time: '-' + totalDays + 'd', bgColor: 'bgRed' }}if (remainingHours > 0) {return { time: '-' + remainingHours + 'h', bgColor: 'bgRed' }}if (remainingMinutes >= 0) {return { time: '-' + remainingMinutes + 'm', bgColor: 'bgRed' }}} else {//剩余时间为 d 或者 h 绿色if (totalDays > 0) {return { time: totalDays + 'd', bgColor: 'bgGreen' }}if (remainingHours > 0) {return { time: remainingHours + 'h', bgColor: 'bgGreen' }}//剩余时间为 m 橙色if (remainingMinutes >= 0) {return { time: remainingMinutes + 'm', bgColor: 'bgOrange' }}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FLV】记录 H.264的解析

参考 FLV 文件格式分析 知乎大神的FLV文件格式分析。 FLV 首先下发9个字节的FLV 头 -2024-01-08 11:38:29.698 INFO [32196] [evplayer_client_main@153] player clinet run … 2024-01-08 11:38:29.702 INFO [2276] [evplayer_client_main::<lambda_1>::operator ()@14…

windows系统升级

问题 windows系统升级 详细问题 笔者手边有台电脑&#xff0c;操作系统版本为windowsXP&#xff0c;现需要升级至windows较新版本 解决方案 1、 内容备份 若C盘有重要数据文件 &#xff0c;对于C盘&#xff08;重要数据文件&#xff09;进行备份 2、下载软件天猫一键重装…

【HBase】——整合Phoenix

1 概述 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表&#xff0c;插入数据和查询 HBase 数据。   Phoenix 在 5.0 版本默认提供有两种客户端使用&#xff08;瘦客户端和胖客户端&#xff09;&#xff0c;在 5.1.2 版本 安装包中…

【数据结构】数据结构中应用题大全(完结)

自己在学习过程中总结了DS中几乎所有的应用题&#xff0c;可以用于速通期末考/考研/各种考试。很多方法来源于B站大佬&#xff0c;底层原理本文不做过多介绍&#xff0c;建议自己研究。例题大部分选自紫皮严书。pdf版在主页资源 一、递归时间/空间分析 1.时间复杂度的分析 设…

sqlachemy orm create or delete table

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DateTime ​ ​ Base declarative_base() engine create_engine(mysqlpymysql://root:123456localhost:3306/test?char…

MySQL之子查询、连接查询(内外)以及分页查询(实操)

文章目录 前言一、SQL脚本二、实操以及实现思路 前言 续上篇博主MySQL之视图&索引&执行计划这篇给大家讲解MySQL之子查询、连接查询(内&外)以及分页查询 一、SQL脚本 /*Navicat Premium Data TransferSource Server : localhostSource Server Type :…

Koodo Reader : 一个开源免费的电子书阅读器

今天在浏览 GitHub 的时候&#xff0c;偶然发现了一个非常有趣的开源项目——Koodo Reader。这个项目是一款开源免费的电子书阅读器&#xff0c;支持多种格式。它具有一些非常独特的功能&#xff0c;深深地吸引了我的注意。在接下来的内容中&#xff0c;我将为大家详细介绍一下…

站长工具之PHP单文件实现IP归属地批量查询

站长/程序员工具之PHP单程序文件实现IP归属地批量查询 支持提取IP便于直接粘贴日志&#xff0c;去重防止重复查询浪费计算资源 按出现次数排序方便分析该IP行为。查询速度极快。 <?php //整理与分享&#xff1a;yujianyue<15058593138qq.com> //注意还得放纯真IP数…

07、Kafka ------ 消息生产者(演示 发送消息) 和 消息消费者(演示 监听消息)

目录 Kafka --- 消息生产者★ 消息★ 消息的分发机制★ 分发到哪个分区★ 轮询策略&#xff08;round-robin&#xff09;★ 使用命令行工具发送消息演示添加消息 Kafka --- 消息消费者★ 消息消费者命令▲ 监听 【指定主题】 的所有消息:▲ 监听 【指定主题、指定分区】的所有消…

华为OD机试 - 启动多任务排序(Java JS Python C)

题目描述 一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。 现在给出多条任务依赖关系的规则,请输入任务的顺序执行序列,规则采用贪婪策略,即一个任务如果没有依赖的任务,则…

LED电平显示驱动电路图

LB1409九位LED电平显示驱动电路 如图所示为LBl409九位LED电平显示驱动电路。图&#xff08;a&#xff09;是用LB1409做电平显示驱动电路&#xff0c;图&#xff08;b&#xff09;是应用基准电压电平显示驱动电路。LB1409是日本东京互洋电机株式会社生产的产品&#xff0c;与其…

开启Android学习之旅-5-Activity全屏

Android 两种方式设置全屏&#xff1a; 1. 第一行代码中的方法 通过 getWindow().getDecorView()方法拿到当前Activity的DecorView,再调用 setSystemUiVisibility() 方法来改变系统UI的显示&#xff0c;这里传入了 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 和 View.SYSTEM_UI_…

Adams许可管理安全控制策略

随着全球信息化的快速发展&#xff0c;信息安全和许可管理问题日益凸显。在这场无形的挑战中&#xff0c;Adams许可管理安全控制策略以其卓越的性能和可靠性&#xff0c;引领着解决这类问题的新潮流。 Adams许可管理安全控制策略是一种全方位、多层次的安全控制方案&#xff0…

线程通信:实现多线程协同

线程通信&#xff1a;实现多线程协同 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同深入探讨在多线程编程中至关重要的话题——“线程通…

上海雏鸟科技无人机灯光秀跨年表演点亮三国五地夜空

2023年12月31日晚&#xff0c;五场别开生面的无人机灯光秀跨年表演在新加坡圣淘沙、印尼雅加达、中国江苏无锡、浙江衢州、陕西西安等五地同步举行。据悉&#xff0c;这5场表演背后均出自上海的一家无人机企业之手——上海雏鸟科技。 在新加坡圣淘沙西乐索海滩&#xff0c;500架…

设计模式的艺术P1基础—2.2 类与类的UML图示

设计模式的艺术P1基础—2.2 类与类的UML图示 在UML 2.0的13种图形中&#xff0c;类图是使用频率最高的两种UML图之一&#xff08;另一种是用于需求建模的用例图&#xff09;&#xff0c;它用于描述系统中所包含的类以及它们之间的相互关系&#xff0c;帮助人们简化对系统的理解…

Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。 本节&#xff1a;自定义界面 在网上看见一个博客&#xff0c;根据需要演示一下。 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:…

系列三十五、获取Excel中的总记录数

一、获取Excel中的总记录数 1.1、概述 使用EasyExcel开发进行文件上传时&#xff0c;通常会碰到一个问题&#xff0c;那就是Excel中的记录数太多&#xff0c;使用传统的方案进行文件上传&#xff0c;很容易就超时了&#xff0c;这时可以通过对用户上传的Excel中的数量进行限制…

vue3+echarts应用——深度遍历html的dom结构并用树图进行可视化

文章目录 ⭐前言&#x1f496;vue3系列文章 ⭐html数据解析&#x1f496; html字符串转为html对象&#x1f496; 深度遍历html对象内容 ⭐echarts 树图的渲染&#x1f496; 处理html内容为树状结构&#x1f496; 渲染树状图&#x1f496; inscode代码块 ⭐总结⭐结束 ⭐前言 大…

5《Linux》

文章目录 查看端口号查看进程号查看IP查看与某台机器连接情况 Linux查看日志的命令&#xff1f;head [-n 行数参数】tail [-n 行数参数】cat [-n 行号展示】tac [-n 行号展示】 Linux操作文本-三剑客grep-擅长过滤正则过滤sed-擅长取行awk-擅长取列 Linux性能监控的命令&#x…