如何将Zend DateTime元素设置为00:00:00'

时间:2014-11-21 22:41:04

标签: php date datetime zend-framework zend-framework2

我正在使用Zend Framework 2 DateTimeSelect。如何将值(在表单类或控制器中)设置为“0000-00-00 00:00:00”?目前它默认为年底。当我在控制器中尝试以下内容时,我得到以下结果...

$date = date("0-0-0 0:0:0"); `This gives me the date as November 30th`
$date =  '0000-00-00 00:00:00';`This gives me the date as November 30th`
$date =  NULL; `This gives me the current date time.` 

 $form->get('datetime')->setValue($date);

我想将此字段留空或为0,直到任务完成。

非常感谢 马特

1 个答案:

答案 0 :(得分:1)

您可能对1 b.c和1 a.d标记周围的年数有误解。

christus之前的最后一个月和年份是12月1日30日。紧随其后的是1月1日a.d(Anno Domini)。从历史上看,第一年没有第0年开始。

这意味着如果我们创建DateTime对象并将日期设置为day = 0,month = 0,则year = 0仍将位于christus之前的日期区域。

$test = new DateTime();
$test->setDate(0, 0, 0);
//I left out timezone settings so it'll take the default timezone
var_dump($test); exit;

会出局:

  

object(DateTime)#1(3){[" date"] => string(20)" -0001-11-30 00:00:00" [" timezone_type"] => int(3)[" timezone"] => string(13)" Europe / Berlin" }

-0001-11-30 looks a bit weird since php counts months beginning with 0 = January, .... , 11 = December.

现在,与setDate方法不同,构造函数将字符串作为参数解析为时间对象。这基本上调用了最后设置的Date方法,具有相同的

  

天= 0   月= 0   年= 0

再次输出:

  

object(DateTime)#1(3){[" date"] => string(20)" -0001-11-30 00:00:00" [" timezone_type"] => int(3)[" timezone"] => string(13)" Europe / Berlin" }

这使我得出结论,即开箱即用DateTime Object Class来呈现特定日期" 0000-00-00:00:00:00"文学是不可能的,历史上是不正确的。

请您详细说明为什么要详细说明这一点?