/** * 标准日期格式化为中文汉字日期。 * 例:'2014-12-26' → '二〇一四 年 十二 月 二十六 日'; * '2015-04-07' → '二〇一五 年 四 月 七 日 ' * @param string $ymd 年月日字符串,必须是strtotime能接受的格式。具体格式要求请参考strtotime。 * @param string $zero 年份中的'0'的表达方式,缺省为'〇',也可以根据需要传入'零'之类的。 * @param boolean $leadSp 年月日是否需要空格分隔。 * TRUE的情况: '二〇一四 年 十二 月 二十六 日'; * FALSE的情况:'二〇一四年十二月二十六日'。 * @return string 格式化之后的日期(汉字表达) */ public static function toYmdFullHanzi($ymd, $zero='〇', $leadSp=FALSE){ $dt = strtotime($ymd); $y = date('Y', $dt); $m = date('n', $dt); $d = date('j', $dt); $y1 = substr($y, 0, 1); $y2 = substr($y, 1, 1); $y3 = substr($y, 2, 1); $y4 = substr($y, 3, 1); $hans = array(0=>$zero, 1=>'一', 2=>'二', 3=>'三', 4=>'四', 5=>'五', 6=>'六', 7=>'七', 8=>'八', 9=>'九', 10=>'十', 11=>'十一', 12=>'十二', 13=>'十三', 14=>'十四', 15=>'十五', 16=>'十六', 17=>'十七', 18=>'十八', 19=>'十九', 20=>'二十', 21=>'二十一', 22=>'二十二', 23=>'二十三', 24=>'二十四', 25=>'二十五', 26=>'二十六', 27=>'二十七', 28=>'二十八', 29=>'二十九', 30=>'三十', 31=>'三十一'); return $hans[$y1].$hans[$y2].$hans[$y3].$hans[$y4] . ($leadSp?' 年 ':'年'). $hans[$m] . ($leadSp?' 月 ':'月') . $hans[$d] . ($leadSp?' 日':'日'); }
为了将标准日期格式化(转换)为中文汉字的表达,g了好几页竟然都没有靠谱的(其中一个“一句话解决”的,有明显的bug,我也看不懂代码,就不在他的基础上改了),只好自己写一个,所幸这个需求比较简单,不用费什么脑细胞,简单将就用着吧。代码写得比较圡,好处是只用到PHP标准函数,不依赖其他函数库目前没有发现什么特别的bug,可以根据自己的需要修改。