PHP将日期转换为JDE的儒日历格式

JDE的儒日历格式规则如下:

儒日历是 6位数 ; (例: 2018年1月1 号 =》 118001) 

第一位 表示 世纪(例: 1表示21世纪 ;0表示20世纪);

第二三位表示  年份 (例:比如2018年  为 18 );

后3位表示 1年的第多少天  ;

方法如下:

/**
 * 日期转换为 Jde 儒日历 【支持时间转换范围:1970 - 2999年】
 * 【六位: 第一位标识 世纪 例: 0表示20世纪,1表示21世纪,第二、三位表示年,最后三位表示本年的第几天】
 * 例:2018-01-01  =》 118001
 * @param $date
 * @return string
 */
function getJdeDate($date){
    #转换为时间戳
    $unix_time = strtotime($date);
    #获取时间信息
    $ary_date = getdate($unix_time);
    #获取年
    $str_year = $ary_date['year'];
    #获取世纪标识 【20世纪 => 0; 21世纪 => 1; 22世纪 => 2】
    #如果年/100有余数
    if($str_year%100) {
        $century = ceil($str_year/100)%10; #向上取整
    } else {
        $century = floor($str_year/100)%10; #向下取整
    }
    #获取年后两位
    $year = substr($str_year,2);
    #获取一年中的第几天
    $year_day = $ary_date['yday'] + 1;
    #如果不足三位数补足三位数
    $year_day = str_pad($year_day,3,0,STR_PAD_LEFT);
    #儒日历
    return $century.$year.$year_day;
}

测试用例:

<?php
/**
 * 日期转换为 Jde 儒日历 【支持时间转换范围:1970 - 2999年】
 * 【六位: 第一位标识 世纪 例: 0表示20世纪,1表示21世纪,第二、三位表示年,最后三位表示本年的第几天】
 * 例:2018-01-01  =》 118001
 * @param $date
 * @return string
 */
function getJdeDate($date){
    #转换为时间戳
    $unix_time = strtotime($date);
    #获取时间信息
    $ary_date = getdate($unix_time);
    #获取年
    $str_year = $ary_date['year'];
    #获取世纪标识 【20世纪 => 0; 21世纪 => 1; 22世纪 => 2】
    #如果年/100有余数
    if($str_year%100) {
        $century = ceil($str_year/100)%10; #向上取整
    } else {
        $century = floor($str_year/100)%10; #向下取整
    }
    #获取年后两位
    $year = substr($str_year,2);
    #获取一年中的第几天
    $year_day = $ary_date['yday'] + 1;
    #如果不足三位数补足三位数
    $year_day = str_pad($year_day,3,0,STR_PAD_LEFT);
    #儒日历
    return $century.$year.$year_day;
}
echo getJdeDate('2018-01-01 00:00:00');

  输出:118001

 

猜你喜欢

转载自www.cnblogs.com/yilincool/p/JdeDate.html