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 ...
随机推荐
- Python 按分类权重(区间)随机获取分类样本
按分类权重(区间)随机获取分类样本 By:授客 QQ:1033553122 开发环境 win 10 python 3.6.5 需求 活动抽奖,参与抽奖产品有iphone, 华为,小米,魅族,vivo, ...
- 题解:CF1971B Different String
题解:CF1971B Different String 题意 给予你一个字符串 \(s\),保证 \(s\) 的长度小于等于 \(10\). 任意排列 \(s\),使其与原 \(s\) 不同. 判断是 ...
- 【Maxwell】01 安装及入门
官网地址: https://maxwells-daemon.io/ 下载地址(版本发行): https://github.com/zendesk/maxwell/releases 参考教程自尚硅谷视频 ...
- 【H5】15 表单 其四 数据发送
一旦在客户端上验证了表单数据,就可以提交表单了. 并且,由于我们在上一篇文章中介绍了验证,因此我们准备提交! 本文着眼于用户提交表单时会发生什么-数据将流向何处,以及到达表单后如何处理? 我们还将研究 ...
- 一直让 PHP 程序员懵逼的同步阻塞异步非阻塞,终于搞明白了
大家好,我是码农先森. 经常听到身边写 Java.Go 的朋友提到程序异步.非阻塞.线程.协程,让系统性能提高到百万.千万并发,使我甚是惊讶属实羡慕.对于常年写 PHP 的我来说,最初听到这几个词时, ...
- uniapp tabBar配置后不显示
pages 和tabbar 箭头所指位置 第一个必须一样 写法也要完全一致 上面这样写 下面这样写 这样都不能匹配上正常显示
- AtCoder Beginner Contest 328
AtCoder Beginner Contest 328 A - Not Too Hard (atcoder.jp) #include <bits/stdc++.h> #define de ...
- Jetpack架构组件学习(5)——Hilt 注入框架使用
原文: Jetpack架构组件学习(5)--Hilt 注入框架使用-Stars-One的杂货小窝 本篇需要有Kotlin基础知识,否则可能阅读本篇会有所困难! 介绍说明 实际上,郭霖那篇文章已经讲得比 ...
- 推荐2款实用的持续集成与部署(CI&CD)自动化工具
前言 最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自 ...
- 组合逻辑环(Combinational Logic Loop)
组合逻辑电路 组合逻辑电路是数字电子学中一类基本的电路类型,它由一系列逻辑门组成,用于实现特定的逻辑功能.与时序逻辑电路不同,组合逻辑电路的输出完全取决于当前的输入信号,而不受之前输入的影响.换句话说 ...