0

我在这段代码中有一个问题:

$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 个变量并使用 implode 函数根据您指定的日期创建格式。例如,假设我输入 10/01/1989,它将回显显示 10/01/1989。

我还需要对数据库使用日期函数和 strtotime 函数(请参阅上面的代码),将我的日期字段设置为日期数据类型。

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

抱歉英语不好=P

4

2 回答 2

1

我只会使用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

于 2012-07-26T12:30:13.117 回答
0

你应该使用mktime

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

mktime 的文档在这里

于 2012-07-26T12:26:54.480 回答