javascript 的Date 格式化, 模仿shell中date命令的格式

简介: 原文:javascript 的Date 格式化, 模仿shell中date命令的格式shell 中显示当前的日期 [root@localhost]$ date '+%Y-%m-%d %H:%M:%S' 2015-01-19 16:24:58 把javascript 中的Date object...
原文: javascript 的Date 格式化, 模仿shell中date命令的格式

shell 中显示当前的日期

[root@localhost]$ date '+%Y-%m-%d %H:%M:%S'
2015-01-19 16:24:58

把javascript 中的Date object 格式化成适合的字符串,很不方便,模拟shell中的格式

下面先用3段简单的代码来说明模拟函数中用到的特性

  1. 字符串的replace

    var a = '1234'
    undefined
    a.replace('1', 'ab') 
    "ab234"
    a
    "1234"
    b = a.replace('1', 'ab') 
    "ab234"
    b
    "ab234"

    注意:replace是返回替换后的结果,而不是直接在字符串中更改

  2. Date的函数

    d = new Date();
    Mon Jan 19 2015 17:08:04 GMT+0800 (中国标准时间)
    d.getFullYear()
    2015
    d.getMonth()
    0
    d.getDate()
    19
    d.getHours()
    17
    d.getMinutes()
    8
    d.getSeconds()
    4
    // 单位是毫秒
    d.getTime()
    1421658484111

    注意getTime的单位

  3. 正则匹配

    fmt = '%Y-%m-%d'
    "%Y-%m-%d"
    
    // 要特别注意其中的括号
    /(%Y)/.test(fmt)
    true
    RegExp.$1
    "%Y"
    
    /%Y/.test(fmt)
    true
    RegExp.$1
    ""
    // return替换后的结果, 而不是直接替换fmt
    fmt.replace(RegExp.$1, 'abc')
    "abc-%m-%d"
    /(Y/.test(fmt)
  4. 模拟的代码

    // chrome 按F12,打开drawer测试
    Date.prototype.format = function(fmt)   
    { //author: meizz   
      var o = {   
        "%m" : this.getMonth()+1+'',                 //月份   
        "%d" : this.getDate() + '',                  //日   
        "%H" : this.getHours()+'',                   //小时   
        "%M" : this.getMinutes()+'',                 //分   
        "%S" : this.getSeconds()+'',                 //秒   
        //"q+" : Math.floor((this.getMonth()+3)/3), //季度   
      };   
      // 年份  2015
      if(/(%Y)/.test(fmt))   
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"")); 
    
      // 两位年份  15
      if(/(%y)/.test(fmt))   
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(2));     
    
      //getTime返回的是以毫秒为单位的,转为秒
      if(/(%s)/.test(fmt))   
        //fmt=fmt.replace(RegExp.$1, this.getTime()/1000); 
        fmt=fmt.replace(RegExp.$1, (this.getTime()+'').slice(0, 10)); 
    
      for(var k in o)   
        if(new RegExp("("+ k +")").test(fmt)){   
            fmt = fmt.replace(RegExp.$1, (o[k].length == 2 ? o[k] : '0' + o[k]));   
        }
      return fmt;   
    }     
    
    
    > d = new Date();
    < Mon Jan 19 2015 16:54:46 GMT+0800 (中国标准时间)
    
    > d.format('%Y-%m-%d %H:%M:%S')
    < "2015-01-19 16:54:46"
    
    > d.format('%s')
    < "1421657686"

如果要用到正式环境,可以把上面的函数,放到一个js文件,然后在html文件中引用

目录
相关文章
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
834 2
|
7月前
|
存储 Unix Shell
Shell 输出命令完全指南:echo 与 printf 的深度剖析
本文深入解析了 Shell 编程中 `echo` 和 `printf` 两个核心输出命令的用法与区别。`echo` 简单易用,适合基础输出;`printf` 功能强大,支持复杂格式化。文章从语法、转义序列、高级技巧到实际应用场景(如日志记录、进度显示)逐一讲解,并对比两者的性能与适用场景,帮助开发者根据需求灵活选择。最后通过进阶技巧和常见问题解答,进一步提升对两者的掌握程度。
377 1
|
8月前
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
10月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
310 20
|
12月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
325 57
|
10月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
356 12
|
12月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
12月前
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
1548 7
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
301 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
259 1