常用时间格式与PHP时间格式相互转换

   例如有常用时间格式 yyyy-mm-dd HH:ii:ss,如何转换成PHP中date函数可使用的时间格式呢?

  使用 PHPTimeFormatFromCommon() 可以把通用时间格式转换成PHP时间格式

    PHPTimeFormatFromCommon('yyyy-mm-dd HH:ii:ss') => 'Y-m-d H:i:s'

  使用 PHPTimeFormatToCommon() 可以把PHP时间格式转换成通用时间格式

    PHPTimeFormatToCommon('Y-m-d H:i:s') =>  'yyyy-mm-dd HH:ii:ss'

  例如:

    echo gmdate(PHPTimeFormatFromCommon('yyyy-mm-dd HH:ii:ss A DD'), time() + 8 * 3600);

  结果:

    2010-04-10 11:11:54 AM Saturday

  具体使用说明请看代码中的注释,有详细说明。 

/*
    PHP Time Formatting Functions
    Author: Fenying
    Version: 1.0.0.1
    Time: 2010-04-10
    CopyRight: All CopyRight Fenying Studio 2007-2010 Reserved.
*/
 
    $DS_TIME_TimeSign = array(
        array( 'yyyy' , '<#0x01#>' , 'Y' ),
        array( 'yy' , '<#0x02#>' , 'y' ),
        array( 'MM' , '<#0x03#>' , 'F' ),
        array( 'mm' , '<#0x04#>' , 'm' ),
        array( 'M' , '<#0x05#>' , 'M' ),
        array( 'm' , '<#0x06#>' , 'n' ),
        array( 't' , '<#0x07#>' , 't' ),
        array( 'dd' , '<#0x08#>' , 'd' ),
        array( 'd' , '<#0x09#>' , 'j' ),
        array( 'DD' , '<#0x10#>' , 'l' ),
        array( 'D' , '<#0x11#>' , 'jS' ),
        array( 'z' , '<#0x12#>' , 'z' ),
        array( 'W' , '<#0x13#>' , 'W' ),
        array( 'HH' , '<#0x14#>' , 'H' ),
        array( 'hh' , '<#0x15#>' , 'h' ),
        array( 'H' , '<#0x16#>' , 'G' ),
        array( 'h' , '<#0x17#>' , 'g' ),
        array( 'ii' , '<#0x18#>' , 'i' ),
        array( 'ss' , '<#0x19#>' , 's' ),
        array( 'c' , '<#0x20#>' , 'c' ),
        array( 'r' , '<#0x21#>' , 'r' ),
        array( 'a' , '<#0x22#>' , 'a' ),
        array( 'A' , '<#0x23#>' , 'A')
    );

    $DS_TIME_SpecialChars = array(
        'd' , 'D' , 'j' , 'l' , 'N' , 'S' , 'w' , 'z' ,
        'W' , 'F' , 'm' , 'M' , 'n' , 't' , 'L' , 'o' ,
        'Y' , 'y' , 'a' , 'A' , 'B' , 'g' , 'G' , 'h' ,
        'H' , 'i' , 's' , 'e' , 'I' , 'O' , 'T' , 'Z' ,
        'c' , 'r' , 'U'
    );

/*
    yyyy = 四位数年份
    yy = 两位数年份

    MM = 月份,英文完整单词
    mm = 月份,数字,自动补0
    M = 月份,英文缩写单词
    m = 月份,数字,不补0
    t = 月份天数,数字

    dd = 日期,数字,自动补0
    d = 日期,数字,不补0
    DD = 星期,完整单词
    D = 日期,数字,带st、nd、rd或th后缀
    z = 天,数字,表示本年第几天

    W = 周,数字,表示本年第几周

    a = am或pm
    A = AM或PM
    HH = 小时,数字,24小时制,自动补0
    hh = 小时,数字,12小时制,自动补0
    H = 小时,数字,24小时制,不补0
    h = 小时,数字,12小时制,不补0

    ii = 分钟,数字,自动补0
    ss = 秒钟,数字,自动补0

    c = ISO 8601 格式的日期
    r = RFC 822 格式的日期

*/

    function PHPTimeFormatFromCommon( $TimeFormat)
    {
        global $DS_TIME_TimeSign , $DS_TIME_SpecialChars;
        foreach ( $DS_TIME_TimeSign as $Item)
            $TimeFormat = str_replace( $Item [ 0 ], $Item [ 1 ], $TimeFormat);

        foreach ( $DS_TIME_SpecialChars as $Item)
            $TimeFormat = str_replace( $Item , '//' . $Item , $TimeFormat);

        foreach ( $DS_TIME_TimeSign as $Item)
            $TimeFormat = str_replace( $Item [ 1 ], $Item [ 2 ], $TimeFormat);

        return $TimeFormat;
    }

    function PHPTimeFormatToCommon( $TimeFormat)
    {
        global $DS_TIME_TimeSign , $DS_TIME_SpecialChars;
        foreach ( $DS_TIME_TimeSign as $Item)
            $TimeFormat = str_replace( $Item [ 2 ], $Item [ 1 ], $TimeFormat);

        foreach ( $DS_TIME_SpecialChars as $Item)
            $TimeFormat = str_replace( '//' . $Item , $Item , $TimeFormat);

        foreach ( $DS_TIME_TimeSign as $Item)
            $TimeFormat = str_replace( $Item [ 1 ], $Item [ 0 ], $TimeFormat);

        return $TimeFormat;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值