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

来源:互联网 发布:什么是数据库安全性 编辑:程序博客网 时间:2024/05/29 12:19

   例如有常用时间格式 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_TimeSignas$Item)
            $TimeFormat = str_replace($Item[0],$Item[1],$TimeFormat);

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

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

        return $TimeFormat;
    }

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

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

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

        return $TimeFormat;
    }