JS时间对象与字符串相互转换
1、Date => String
代码
/**
* 函数描述:时间格式化工具
* @param format {String} 格式(y-年,M-月,d-日,H-时[24],h-时[12],m-分,s-秒,S-毫秒(3位数),q-季度,ap,午前am/午后pm)
* @returns {String}
*/
Date.prototype.format = function (format) {
var o = {
'M+': this.getMonth() + 1, // 月份
'd+': this.getDate(), // 日
'H+': this.getHours(), // 时(24小时制)
'h+': this.getHours() % 12 === 0 ? 12 : this.getHours() % 12, // 时(12小时制)
'm+': this.getMinutes(), // 分
's+': this.getSeconds(), // 秒
'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
'S': this.getMilliseconds(), // 毫秒
'ap': this.getHours() > 12 ? 'am' : 'pm'
};
var week = ['日', '一', '二', '三', '四', '五', '六'];
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(format)) {
format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[this.getDay()]);
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
}
}
return format;
};
使用
let date = new Date();
let format1 = 'yyyy年MM月dd日 HH:mm:ss.S EEE 第q季度';
let format2 = 'yyyy年M月d日 h:m:s.S ap EE 第q季度';
let format3 = 'yyyy-MM-dd HH:mm:ss.S ap E';
console.log(format1 + " =>", date.format(format1));
console.log(format2 + " =>", date.format(format2));
console.log(format3 + " =>", date.format(format3));
运行结果:
D:\DevEnvironment\NodeJs\node.exe D:\MyProjects\coding-study\src\main\resources\static\utils.js
format1 => 2022年09月23日 23:24:39.836 星期五 第3季度
format2 => 2022年9月23日 11:24:39.836 am 周五 第3季度
format3 => 2022-09-23 23:24:39.836 am 五
Process finished with exit code 0
2、String => Date
代码
/**
* @desc 时间工具对象
*/
const DateUtils = {
format1: 'yyyy-MM-dd HH:mm:ss',
format2: 'yyyy年MM月dd日 HH时mm分ss秒',
/**
* 方法描述:将字符串转为时间对象
* @param time {String} 时间字符串
* @param format {String} 时间格式
* @returns {Date}
*/
convert(time, format) {
if (time instanceof Date) {
return time;
}
if (time && typeof time === 'string') {
let getValue = function (regex) {
let str = regex ? time.substr(regex.index, regex[0].length) : '';
return str ? parseInt(str) : undefined;
}
// 各个时间的值,未获取到则取最小值
let times = [
getValue(/y+/.exec(format)) || 0, // 年
getValue(/M+/.exec(format)) || 0, // 月
getValue(/d+/.exec(format)) || 1, // 日
/H+/.test(format) ? getValue(/H+/.exec(format)) : ((/h+/.test(format) && /pm/i.test(format)) ? getValue(/h+/.exec(format)) + 12 : getValue(/h+/.exec(format))) || 0, // 时
getValue(/m+/.exec(format)) || 0, // 分
getValue(/s+/.exec(format)) || 0, // 秒
function () {
let reg, regArr;
reg = new RegExp(/(\d{1,3}).*/, 'g'); reg.lastIndex = format.indexOf("S");
return reg.lastIndex > -1 ? (regArr = reg.exec(time)) && parseInt(regArr[1]) : undefined;
} () || 0// 毫秒
];
times[1] && (times[1] -= 1);
return new Date(...times);
}
}
}
使用
let date = new Date();
let dateStr1 = date.format(DateUtils.format1);
let dateStr2 = date.format(DateUtils.format2);
console.log(dateStr1 + ' =>', DateUtils.convert(dateStr1, DateUtils.format1));
console.log(dateStr2 + ' =>', DateUtils.convert(dateStr2, DateUtils.format2));
运行结果:
D:\DevEnvironment\NodeJs\node.exe D:\MyProjects\coding-study\src\main\resources\static\utils.js
2022-09-23 23:38:08 => 2022-09-23T15:38:08.000Z
2022年09月23日 23时38分08秒 => 2022-09-23T15:38:08.000Z
Process finished with exit code 0
JS时间对象与字符串相互转换的更多相关文章
- js JSON对象与字符串相互转换
从服务器接收到数据一般是字符串的形式.如果是JSON格式的字符串,就需要先将其转换成JSON对象.JSON对象在浏览器输出为objcet,我们看不到具体的数据.所以将JSON对象转换成字符串. 下面将 ...
- [转]JS中对象与字符串的互相转换
原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: thr ...
- JS中对象与字符串的互相转换
在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON ...
- JavaScript课程——Day07(对象简介、Math对象、时间对象、字符串对象)
1.对象简介 在javaScipt中,一切皆为对象或者皆可以被用作对象 宿主对象:window,document 内置对象:Number String Boolean Array数组 Obje ...
- js操作json与字符串相互转换
字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSON.pars ...
- 一个简单的 js 时间对象创建
JS中获取时间很常见,凑凑热闹,也获取一个时间对象试试 首先,先了解js的获取时间函数如下: var myDate = new Date(); //创建一个时间对象 myDate.g ...
- json对象与字符串相互转换
JSON 语法 JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用的两种类型: 对象表 ...
- js时间对象Date()
Date ()是一个专门用来创建时间对象的,是一个复杂数据类型,具有读写属性 语法: var time = new Date() 返回值:当前终端的时间 // 1.创建当前时间对象 var time ...
- js时间对象格式化 format(转载)
/** * 时间对象的格式化 */ Date.prototype.format = function(format){ /* * format="yyyy-MM-dd hh:mm:ss&qu ...
- JS对象与字符串相互转换
1. JSON.stringify( )---对象转为JSON字符串(前端向后端传递数据时使用) const obj = { id: 0, name: '张三', age: 12 } const ob ...
随机推荐
- LM Studio + open-webui 快速本地部署大语言模型
目录 一.前言 二.环境准备 三.安装设置 四.下载模型并运行 五.配置 open-webui 写在结尾 一.前言 自 OpenAi 发布 ChatGPT 对话性大语言模型,AI 这两年发展迎来爆发, ...
- 商业级java开发单体项目环境搭建
写在开发前,端口经常被战占,windows10用以下命令先查先杀,netstat -aon | findstr "8080" taskkill /F /PID <PID> ...
- python对象之间的交互
python对象之间的交互 先看看一般的类定义如下: class 类名: def __init__(self,参数1,参数2): self.对象的属性1 = 参数1 self.对象的属性2 = 参数2 ...
- 【转载】python画带方差的折线图(csdn上最简洁的代码之一附上)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 原文链接:https://blog.csdn.net/a1920993165/article/ ...
- 基于浅层神经网络(全连接网络)的强化学习算法(Reinforce) 在训练过程中出现梯度衰退(degenerate)的现象
首先给出一个代码地址: https://gitee.com/devilmaycry812839668/CartPole-PolicyNetwork 强化学习中的策略网络算法.<TensorFlo ...
- 分段树(segment tree)的实现 —— 强化学习中 "优先级回放机制" 的重要组成部分
分段树(segment tree)是强化学习中 "优先级回放机制" 的重要组成部分.本文针对分段树(segment tree)的一个开源版本的实现来进行分析,代码地址: https ...
- SonarQube集成Xunit单元测试
安装SonarQube 利用docker 安装SonarQube docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE ...
- 【技术积累】如何处理Feign的超时问题
在使用Feign进行微服务之间的通信时,由于网络延迟等原因,可能会出现请求超时的情况.为了解决这个问题,我们可以对Feign进行配置,设置超时时间. 配置Feign的超时时间 在使用Feign时,我们 ...
- VIM正则替换行尾
https://nfcwar.lofter.com/post/1d1ee5d7_670890a 替换/删除某个字符后面的所有内容::%s/b.*/c/g 删除b后面所有的字符,以c替换.用g表示全 ...
- 在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法
FreeRADIUS 为AAA Radius Linux下开源解决方案,DaloRadius为图形化web管理工具. freeradius一般用来进行账户认证管理,记账管理,常见的电信运营商的宽带账户 ...