原文: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文件中引用

最新文章

  1. [moka同学笔记]Yii2.0 modal的使用
  2. Markdown使用Demo
  3. Docker与容器快速入门
  4. java 中的原始类型与原始封装类型
  5. Looksery Cup 2015 D. Haar Features 暴力
  6. Wireshark抓包分析HTTPS与HTTP报文的差异
  7. Codeforces 600B Queries about less or equal elements(二分查找)
  8. ios Swift ! and ?
  9. 再议Unity 3D
  10. Android学习总结——强制下线功能(广播)
  11. JavaScript基础学习(三)&mdash;数组
  12. Linux下JNA 调用 so 库
  13. jenkins(8): 实战jenkins+gitlab持续集成发布php项目(代码不需要编译)
  14. Java不区分大小写的CaseInsensitiveMap
  15. Centos7安装出现的问题:找不到安装源或者检查软件配置出错
  16. Apache+modjk布置tomcat集群
  17. 面向对象(基础oop)之垃圾回收与静态成员
  18. ThinkPHP通过类的链式继承优化空操作的实现
  19. ubuntu16.04中文乱码解决方案
  20. kafka部分重要参数配置-broker端参数

热门文章

  1. 重新想象 Windows 8 Store Apps (22) - 文件系统: 访问文件夹和文件, 通过 AQS 搜索本地文件
  2. redis入门(转)
  3. ListView的cacheColorHint与listSelector物业和fragment里面onActivityResult问题没有响应
  4. QEMU-KVM自己主动创建虚拟机,以指定IP构造
  5. 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
  6. 推断序列的端部的大小C规划
  7. VisualStudioOnline协同工作流程
  8. 【C++基金会 06】explictkeyword
  9. C和指针 (pointers on C)——第十一章:动态内存分配(下)习题
  10. web 环境项目(intellj部署的tomcat) 重启时报 Exception in thread &quot;HouseKeeper&quot; java.lang.NullPointerException (转)