内爆函数和strtotime之间的冲突


conflict between implode function and strtotime

我在这段代码中遇到了一个问题:

$month = $_POST['month'];
$day = $_POST['day'];
$year = $_POST['year'];
function dateImplodeFunction($year, $month, $day){
  $array = array($year, $month, $day);
  $date = date('Y-m-d', strtotime( implode("-", $array)));
  return $date;
}

基于上面的代码,我将创建一个函数,其中有3个输入月、日和年。当我输入这3个变量时,这些变量将传递给这个函数,将这3个参数组合起来,并使用内爆函数根据指定的日期创建一个格式。例如,假设我输入1989年1月10日,它将与1989年1日10日的显示相呼应。

此外,我需要将日期函数和strtotime函数(参考上面的代码)一起用于数据库,将我的日期字段设置为日期数据类型。

这里的问题是,如果我输入10-01-1989,它会返回/dipslays的值01-01-1970,为什么??我发现由于测试的原因,strtotime和内爆函数之间存在冲突。我在谷歌上搜索过,但没有找到。我希望你能帮我。提前谢谢。

抱歉英语不好=p

我只会使用Date Time class

$month = '07';
$day = '26';
$year = '2012';
$timezone = new DateTimeZone('America/New_York');
$date = new DateTime( "{$year}-{$month}-{$day}", $timezone );
print $date->format('Y-m-d H:i:s');
# Output: 2012-07-26 00:00:00

http://codepad.org/VxwDHPeU

您应该使用mktime:

function dateImplodeFunction($year, $month, $day)
{
    return date('Y-m-d', mktime(0, 0, 0, $month, $day, $year));
}

此处的mktime文档