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 格式化成适合的字符串,很不方便,模拟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文件中引用

时间: 2024-09-05 15:52:35

javascript 的Date 格式化, 模仿shell中date命令的格式的相关文章

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

------------------------时间的格式 date [OPTION]... [+FORMAT] echo `date 空格 +'时间格式串'` 调用date必须加符号反引号``,表示执行里面的结果 当为: `date +'%Y%m%d-%H:%M:%S'`没有时分秒的情况下,不需要用''将格式包含起来.但是增加时分秒后,如果还这样子用  `date +%Y%m%d %H:%M:%S` 则会报错: date: extra operand `%H:%M:%S' 将其看成是额外的参数

Linux下shell中case命令详解

  linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂. 1.强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式. 2.复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break).unconditional follow up(无条件继续)和conditional follow up(有条件继续). 这篇文章的重点是上面的第2点. case的无条件继续和有条件继续

shell中if语句的格式以及使用

shell中if做比较 比较两个字符串是否相等的办法是:     if [ "$test"x = "test"x ]; then     这里的关键有几点:     1 使用单个等号     2 注意到等号两边各有一个空格:这是unix shell的要求     3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的.而如果没有这个x,表达式就会报错:[: =: un

Linux Shell 常见的命令行格式简明总结_linux shell

复制代码 代码如下: #在后台执行 cmd 指令cmd & #命令序列. 在同一行执行多个命令cmd1 ; cmd2 #在当前 shell 中以一组的形式执行多个命令{ cmd1 ; cmd2 ; } #在子 shell 中以一组的形式执行多个命令(cmd1 ; cmd2) #管道. 以 cmd1 的执行输出作为 cmd2 的输入cmd1 | cmd2 #命令替换. 以 cmd2 的执行输出作为 cmd1 的参数cmd1 `cmd2` #POSIX 命令替换. 允许嵌套cmd1 $(cmd2)

linux下shell中执行命令的顺序问题

    在shell中有很多种命令的同义词,到底先执行的是哪一个命令呢,我们可以借助type -a命令来检查.     为了测试我们就对type本身做一条alias:     alias type=type     然后我们通过type -a type查看一下,结果如下: type -a type type is aliased to `type' type is a shell builtin type is /usr/bin/type     可以清楚地看到,对于命令来说首先执行的是alia

PHP日期函数date格式化UNIX时间的方法_php技巧

本文实例讲述了PHP日期函数date格式化UNIX时间的方法.分享给大家供大家参考.具体分析如下: 日期函数可以根据指定的格式将一个unix时间格式化成想要的文本输出 使用到函数语法如下 string date (string $Format); string date (string $Format, int $Time); 下面是演示代码 <?php echo "When this page was loaded,\n"; echo 'It was then ', date

javascript中Date format(js日期格式化)方法小结_javascript技巧

本文实例总结了javascript中日期格式化的方法.分享给大家供大家参考,具体如下: 方法一: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 200

js模仿php中strtotime()与date()函数实现方法_javascript技巧

本文实例讲述了js模仿php中strtotime()与date()函数实现方法.分享给大家供大家参考.具体如下: 在js中没有像php中strtotime()与date()函数,可直接转换时间戳,下面我们来自定一个函数来实现js中具体有时间戳转换的功能. function datetime_to_unix(datetime){ var tmp_datetime = datetime.replace(/:/g,'-'); tmp_datetime = tmp_datetime.replace(/

linux在shell中获取时间 date巧用

  linux在shell中获取时间 date巧用 获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28   date1=$(date --date='1 days ago +%Y%m%d')    #前一天的日期 date1=$(date --date='2 days ago +%Y%m%d')    #前l两天的日期   将当前日期赋值给DATE变量 DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数 获