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时间对象与字符串相互转换的更多相关文章

  1. js JSON对象与字符串相互转换

    从服务器接收到数据一般是字符串的形式.如果是JSON格式的字符串,就需要先将其转换成JSON对象.JSON对象在浏览器输出为objcet,我们看不到具体的数据.所以将JSON对象转换成字符串. 下面将 ...

  2. [转]JS中对象与字符串的互相转换

    原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: thr ...

  3. JS中对象与字符串的互相转换

    在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON ...

  4. JavaScript课程——Day07(对象简介、Math对象、时间对象、字符串对象)

    1.对象简介 在javaScipt中,一切皆为对象或者皆可以被用作对象 宿主对象:window,document 内置对象:Number  String  Boolean  Array数组  Obje ...

  5. js操作json与字符串相互转换

    字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSON.pars ...

  6. 一个简单的 js 时间对象创建

    JS中获取时间很常见,凑凑热闹,也获取一个时间对象试试 首先,先了解js的获取时间函数如下: var myDate = new Date();          //创建一个时间对象 myDate.g ...

  7. json对象与字符串相互转换

    JSON 语法 JSON 语法规则 在 JS 语言中,一切都是对象.因此,任何支持的类型都可以通过 JSON 来表示,例如字符串.数字.对象.数组等.但是对象和数组是比较特殊且常用的两种类型: 对象表 ...

  8. js时间对象Date()

    Date ()是一个专门用来创建时间对象的,是一个复杂数据类型,具有读写属性 语法: var time = new Date() 返回值:当前终端的时间 // 1.创建当前时间对象 var time ...

  9. js时间对象格式化 format(转载)

    /** * 时间对象的格式化 */ Date.prototype.format = function(format){ /* * format="yyyy-MM-dd hh:mm:ss&qu ...

  10. JS对象与字符串相互转换

    1. JSON.stringify( )---对象转为JSON字符串(前端向后端传递数据时使用) const obj = { id: 0, name: '张三', age: 12 } const ob ...

随机推荐

  1. Microsoft Dynamics CRM 365/2016 配置POP3/STMP邮箱(附例)

    前期准备: 必须支持pop3/stmp的邮箱 以下用网易163邮箱做的测试,注意开通了独立安全码,非邮箱登录密码 1.打开设置>>电子邮件配置 2.新建电子邮件配置 pop3/smtp 3 ...

  2. 代码随想录Day1

    704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: ...

  3. Megacity Unity Demo工程学习

    1.前言 Megacity Demo发布于2019年春,本博文撰写于2024年,ECS也早已Release并发布了1.2.3版本.不过好在核心变化不大,多数接口也只是换了调用名称, 该Demo相较于之 ...

  4. 【Vue】Re17 Router 第四部分(参数传递,守卫函数)

    一.案例搭建 新建Profile组件 组件写好内容后配置路由 { path : '/profile', component : () => import('../components/Profi ...

  5. 【Vue】06 Webpack Part2 打包命令配置

    Webpack 配置: 入口 & 出口: 就是我们使用的打包命令: 一个是对什么文件执行,这就是入口 一个是输出到什么文件,这就是出口 每一次打包使用这个命令都必须指定这两个必要的参数 所以将 ...

  6. NVIDIA H100 GPU:GPU的机密计算

    国内总结的资料: https://zhuanlan.zhihu.com/p/644717121 相关论文: https://ieeexplore.ieee.org/document/7163017 博 ...

  7. ubuntu:通过缺失的系统lib库文件查找所需要安装的package——根据lib文件查找所属的package包——命令:sudo apt-file search

    参考: 使用apt-file,根据文件查找所需安装的软件包 ======================================= 使用 apt-file 命令可以通过lib文件名查找其所属的 ...

  8. [天线原理及设计>基本原理] 2. 细线天线上的电流分配

    2. 细线天线上的电流分配 为了说明线性偶极子上电流分布的产生及其随后的辐射,让我们首先从无损双线传输线的几何形状开始,如图1.15(a)所示. 电荷的运动沿每条导线产生幅度为I0/2的行波电流.当电 ...

  9. MYSQL——帆软连接报错

    2024/07/11 1.报错 2.报错原因 3.解决办法 4.参考 1.报错 错误代码:11300001 数据集配置错误<br>Query:<br>Unknown initi ...

  10. “从零到一:如何在鸿蒙OS上启动你的第一个项目”

    背景与引言 全球操作系统市场现状如何? 长期以来,Android.iOS.Windows等巨头几乎垄断了整个市场,成为人们日常生活中不可或缺的工具.然而,尽管它们在各自领域有着不可否认的成功,却也逐渐 ...