请使用一句话将类似“1910-09-09”的日期各式转换为“一九一零年九月九日”这样的各式。(需要有通用性,是不是一句话不是关键,但不允许使用if\switch\while\for等语句)。我自己写的 实在太烂了
网其他各位给出个好算法
function changeToDate($str)
{
$numtostr=array(
'0'=>'零',
'1'=>'一',
'2'=>'二',
'3'=>'三',
'4'=>'四',
'5'=>'五',
'6'=>'六',
'7'=>'七',
'8'=>'八',
'9'=>'九'
);
$numtostr1=array(
'0'=>'',
'1'=>'一',
'2'=>'二',
'3'=>'三',
'4'=>'四',
'5'=>'五',
'6'=>'六',
'7'=>'七',
'8'=>'八',
'9'=>'九'
);
$str=str_replace('-','',$str);
$str=str_split($str);
$str0=$numtostr[$str[0]];
$str1=$numtostr[$str[1]];
$str2=$numtostr[$str[2]];
$str3=$numtostr[$str[3]];
$str4=$numtostr1[$str[4]];
$str5=$numtostr1[$str[5]];
$str6=$numtostr1[$str[6]];
$str7=$numtostr1[$str[7]];
$datestr=$str0.$str1.$str2.$str3."年".$str4.$str5."月".$str6.$str7."日";
return $datestr;
}
$str="1604-09-20";
$date=changeToDate($str);
echo $date;
网其他各位给出个好算法
function changeToDate($str)
{
$numtostr=array(
'0'=>'零',
'1'=>'一',
'2'=>'二',
'3'=>'三',
'4'=>'四',
'5'=>'五',
'6'=>'六',
'7'=>'七',
'8'=>'八',
'9'=>'九'
);
$numtostr1=array(
'0'=>'',
'1'=>'一',
'2'=>'二',
'3'=>'三',
'4'=>'四',
'5'=>'五',
'6'=>'六',
'7'=>'七',
'8'=>'八',
'9'=>'九'
);
$str=str_replace('-','',$str);
$str=str_split($str);
$str0=$numtostr[$str[0]];
$str1=$numtostr[$str[1]];
$str2=$numtostr[$str[2]];
$str3=$numtostr[$str[3]];
$str4=$numtostr1[$str[4]];
$str5=$numtostr1[$str[5]];
$str6=$numtostr1[$str[6]];
$str7=$numtostr1[$str[7]];
$datestr=$str0.$str1.$str2.$str3."年".$str4.$str5."月".$str6.$str7."日";
return $datestr;
}
$str="1604-09-20";
$date=changeToDate($str);
echo $date;
解决方案 »
- Fatal error: Call to undefined function oci_connect() 应该要怎么解决
- file_get_contents 获取的内容为空求解
- 象这样的衔接 .php/abc/efg/ 是用什么做的 根本找不到目录呀
- 上传文件生成的临时文件保留时间?
- 各位高手,问一个弱弱的问题
- smarty的基础缓存,我也实现不了:(
- PHP在cygwin下编译安装出错
- Fatal error: Cannot redeclare class invalidargumentexception
- 汉字无法插入数据库
- PHPMYADMIN数据库导入问题?
- 求助如何实现页面与代码分离
- 请教一个关于循环的问题
$str="1604-09-20";$str1 = preg_replace("/(\d{4})(-)(\d{1,2})(-)(\d{1,2})/e","dateFormat('\\1','\\3','\\5')",$str);function dateFormat($year,$mon,$day){
$format = array('零','一','二','三','四','五','六','七','八','九','年','月','日');
$year = preg_split("//",$year, -1, PREG_SPLIT_NO_EMPTY);
$year[] = 10;
$mon = preg_split("//",ltrim($mon,'0'), -1, PREG_SPLIT_NO_EMPTY);
$mon[] = 11;
$day = preg_split("//",ltrim($day,'0'), -1, PREG_SPLIT_NO_EMPTY);
$day[] = 12;
$dateAr = array_merge($year,$mon,$day);
$ret = '';
foreach($dateAr as $key)
$ret .=$format[$key];
return $ret;
}
echo $str1;
想不出好的,上面我写的...
'1' => '一',
'2' => '二',
'3' => '三',
'4' => '四',
'5' => '五',
'6' => '六',
'7' => '七',
'8' => '八',
'9' => '九');
$y = date('Y', time());
$m = date('m', time());
$d = date('d', time());
echo strtr($y, $a), '年', strtr($m, $a), '月', strtr($d, $a), '日';
strtotime('1910-09-09')),
array(
'0' => '零',
'1' => '一',
'2' => '二',
'3' => '三',
'4' => '四',
'5' => '五',
'6' => '六',
'7' => '七',
'8' => '八',
'9' => '九'
));
$y = date('Y', time());
$m = intval(date('m', time()));
$d = intval(date('d', time()));
echo strtr($y, $a), '年', strtr($m, $a), '月', strlen($d) == 2? strtr(substr($d, 0, 1) == '1'? '': substr($d, 0, 1), $a).'十': strtr(substr($d, 0, 1), $a), strtr(substr($d, 1), $a), '日';
strtotime('1910-09-09')),
array(
'0' => '零',
'1' => '一',
'2' => '二',
'3' => '三',
'4' => '四',
'5' => '五',
'6' => '六',
'7' => '七',
'8' => '八',
'9' => '九'
));
这句和我的效果是一样的 但是很精确
但是有一个问题 就是
1910-12-09
会出现
一九一零年一二月九日
应该是
一九一零年十二月九日
不知道我理解题目错了还是
不能使用foreach吧 汗 连while都不能用