Javascript 转Date对象为字符串实现函数

简介: Javascript 转Date对象为字符串实现函数

转Date对象为字符串实现函数

function formatDate(time, format = "Y-MM-dd HH:mm:ss") {
  /**
    格式化字符说明
    Y 年   四位数  示例 2021
    y   年   年数后二位  示例 21
    M 月   单位数不补0  示例 1
    MM  月   单位数补0    示例 01
    d 日   单位数不补0  示例 2
    dd  日   单位数补0    示例 02
    H 小时 24小时制,单位数不补0 示例 3
    HH  小时 24小时制,单位数补0   示例 03
    h 小时 12小时制,单位数不补0 示例 3
    hh  小时 12小时制,单位数补0   示例 03
    m 分钟 单位数不补0 示例 4
    mm  分钟 单位数补0   示例 04
    s 秒 单位数不补0  示例 5
    ss  秒 单位数补0    示例 05 
  */
  let date = new Date(time);
  let yearFull = date.getFullYear().toString();
  let yearTwoDigits = yearFull.substr(2, 2);
  let month = date.getMonth() + 1; //月份是从0开始的,所以要加1
  let day = date.getDate();
  let hour = date.getHours(); // 24小时制
  let hourTwelve = hour % 12; // 12小时制
  let min = date.getMinutes();
  let sec = date.getSeconds();
  let preArr = Array.apply(null, Array(10)).map(function(elem, index) {
    return "0" + index;
  }); // 创建一个长度为10的数组 格式为 00 01 02 03,用于给月份,小时,分钟等“补0”
  let newTime = format
    .replace(/Y/g, yearFull)
    .replace(/y/g, yearTwoDigits)
    .replace(/MM/g, preArr[month] || month)
    .replace(/M/g, month)
    .replace(/dd/g, preArr[day] || day)
    .replace(/d/g, day)
    .replace(/HH/g, preArr[hour] || hour)
    .replace(/H/g, hour)
    .replace(/hh/g, preArr[hourTwelve] || hourTwelve)
    .replace(/h/g, hourTwelve)
    .replace(/mm/g, preArr[min] || min)
    .replace(/m/g, min)
    .replace(/ss/g, preArr[sec] || sec)
    .replace(/s/g, sec);
  return newTime; 
}
// 运行测试
formatDate(new Date().getTime()); // 2021-02-05 10:53:42
formatDate(new Date().getTime(), "Y年M月d日"); // 2021年2月5日
formatDate(new Date().getTime(), "y-MM-dd"); // 21-02-05
let str_datetime = "2021/02/05 09:05:05".replace(/-/g,"/");
formatDate(new Date(str_datetime).getTime(),"今天是Y/MM/dd h:m:s"); //今天是2021-02-05 09:05:05
formatDate(new Date(str_datetime).getTime(), "今天是Y/MM/dd HH:mm:ss"); //今天是2021-02-05 09:05:05
目录
相关文章
|
11月前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
162 19
|
6月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
167 23
|
11月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
6月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
8月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
167 32
|
11月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
242 63
|
7月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
9月前
|
JavaScript 前端开发 开发者
JavaScript字符串的常用方法
在JavaScript中,字符串处理是一个非常常见的任务。JavaScript提供了丰富的字符串操作方法,使开发者能够高效地处理和操作字符串。本文将详细介绍JavaScript字符串的常用方法,并提供示例代码以便更好地理解和应用这些方法。
157 13
|
11月前
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
147 1
JavaScript中对象的数据拷贝

热门文章

最新文章