日期在SQL Server 2000里是smalldatetime,现在要把里面的数据倒到MySQL里:timestamp,所用的工具函数如下:
function formatStringDate($strDate){ $conver=explode(" ",$strDate); $currTime=(strlen($conver[3])<4)?$conver[4]:$conver[3]; switch($conver[1]){ case "一月": $month="01"; break; case "二月": $month="02"; break; case "三月": $month="03"; break; case "四月": $month="04"; break; case "五月": $month="05"; break; case "六月": $month="06"; break; case "七月": $month="07"; break; case "八月": $month="08"; break; case "九月": $month="09"; break; case "十月": $month="10"; break; case "十一月": $month="11"; break; case "十二月": $month="12"; break; } $formatdate=$conver[0].'-'.$month.'-'.$conver[2]." ".$currTime; return $formatdate; }
把上面转换后的格式转换成MySQL:timestamp格式日期
function getTimeStamp($strtime){ $array = explode("-",$strtime); $stryear = $array[0]; $strmonth = $array[1]; $array = explode(":",$array[2]); $strminute = $array[1]; $strsecond = $array[2]; $array= explode(" ",$array[0]); $strday = $array[0]; $strhour = $array[1]; $timestamp = mktime($strhour,$strminute,$strsecond,$strmonth,$strday,$stryear); return $timestamp; }
问题:
在formatStringDate函数中不加:
$currTime=(strlen($conver[3])<4)?$conver[4]:$conver[3];
当日期中的时间是3位数字是,时间部分会丢失,4位的情况下不会发生丢失情况,示例:
2005 四月 10 0:58
formatStringDate转换后:
2005-04-10
时间部分丢失了!这时再执行getTimeStamp函数会提示:
Warning: mktime() expects parameter 1 to be long
在formatStringDate函数中加上:
$currTime=(strlen($conver[3])<4)?$conver[4]:$conver[3];
丢失的时间就出现来.哪为什么会是$conver[4]呢?为什么count($conver)会得到5呢?在时间是3位的情况下