原文: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 的Date 格式化, 模仿shell中date命令的格式的更多相关文章

  1. (转)shell中test命令方法详解

    test命令用法.功能:检查文件和比较值 shell中test命令方法详解 原文:https://www.cnblogs.com/guanyf/p/7553940.html 1)判断表达式 if te ...

  2. shell中date使用总结-基于自动定期备份mysql实践

    ------------------------时间的格式 date [OPTION]... [+FORMAT] echo `date 空格 +'时间格式串'` 调用date必须加符号反引号``,表示 ...

  3. Date, TimeZone, MongoDB, java中date的时区问题

    打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Googl ...

  4. Oracle数据库date类型与Java中Date的联系与转化

    以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前 ...

  5. shell中wait命令详解

    wait命令介绍 wait [作业指示或进程号] 1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态.如果没有制定参数,则等待所有子进程的退出,其退出状态为0. 2.如果是s ...

  6. shell中对于命令的搜寻顺序

    当你在shell命令行输入一条命令时,shell的搜寻顺序是如何的呢?当你的脚本名字和shell中的函数名字重名,shell是如何决定运行哪一个的? 在shell中,shell对于命令的搜寻优先级为: ...

  7. [转]shell中 source命令即点空格后面再跟可执行文件的说明

    这里记录的是在一个shell脚本里面使用. ./file.sh 和./file.sh 的区别,本文参考了http://www.lslnet.com/linux/dosc1/39/linux-28353 ...

  8. shell 中test命令

    test可用于测试表达式,支持测试的范围包括:字符串比较,算术比较,文件存在性.属性.类型等判断.例如,判断文件是否为空.文件是否存在.是否是目录.变量是否大于5.字符串是否等于"longs ...

  9. 书写优雅的shell脚本(六)- shell中的命令组合(&&、||、())

    shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时,表示执行失败.  有时候,下一条命令依赖前 ...

随机推荐

  1. 7、Cocos2dx 3.0游戏开发找小三之3.0版本号的代码风格

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27691337 Cocos2d-x代码风格 前面我们已 ...

  2. effective c++ prefer const,enum, inline to #defines

    学习心得 对于纯常量,最好以const对象或者enums替换#define #define FIRST 3 //not good enum { first=1, second=2 } ; int nu ...

  3. CCLayer在Touch事件(Standard Touch Delegate和Targeted Touch Delegate)

    在做练习,触摸故障,看到源代码,以了解下触摸事件. 练习操作:直CClayer子类init在 this->setTouchEnabled(true); 事件处理方法覆盖 virtual bool ...

  4. Effective C++ 条款44

    本节条款的标题是:将与參数无关的代码抽离templates 学习本节条款首先须要明确一件事情,那就是模板实例化的过程会不会反复? 我们来举个样例: #include<iostream> u ...

  5. 算法 《霍纳的方法java实践》

    [历史背景] 霍纳的方法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法--正负开方术. 它也能够配合牛顿法用来求解一元高次多项式的根.在西方被称作霍纳算法(Horner algorith ...

  6. JGroups 入门实践(转)

    前言 JGroups是一个开源的纯java编写的可靠的群组通讯工具.其工作模式基于IP多播,但可以在可靠性和群组成员管理上进行扩展.其结构上设计灵活,提供了一种灵活兼容多种协议的协议栈. JGroup ...

  7. Swing 组件焦点设置

    在Swing中,焦点默认是在第一个组件上,所以在项目中想将焦点设置在其他的组件上,如JTextField!但通过requestFocus()方法不起作用,有人提供以下解决方法: 全部初始化之后,jTe ...

  8. 第三章_JSP

    3.1.JSP概述 Jsp页面实在jsp容器中执行的.Servlet容器一般也是JSP容器.比如,Tomcat就是一个Servlet/JSP容器. 第一次请求一个jsp页面时,Servlet/JSP容 ...

  9. POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量

    联系:http://poj.org/problem?id=2391 题意:有f个草场,每一个草场当前有一定数目的牛在吃草,下雨时它能够让一定数量的牛在这里避雨,f个草场间有m条路连接,每头牛通过一条路 ...

  10. 基于Qt有限状态机的一种实现方式和完善的人工智能方法

    基于Qt有限状态机的一种实现方式和完善的人工智能方法 人工智能在今年是一个非常火的方向,当然了.不不过今年,它一直火了非常多年,有关人工智能的一些算法层出不穷.人工智能在非常多领域都有应用,就拿我熟悉 ...