如何将 Zend 日期时间元素设置为 '0000-00-00 00:00:00'


How can I set Zend DateTime Element to '0000-00-00 00:00:00'?

我正在使用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 年和公元 1 年标记的计算方式有误解。

基督之前的最后一天是公元前12月30日。紧接着是公元1月1日(纪元多米尼)。从历史上看,没有 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) ["时区"]=> string(13) "欧洲/柏林" }

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

现在与setDate方法不同,构造函数将字符串作为参数,该参数被解析为Time对象。它基本上在最后调用 set Date 方法

,使用相同的

天 = 0 月 = 0 年份 = 0

再次将输出:

object(DateTime)#1 (3) { ["date"]=> string(20) "-0001-11-30 00:00:00" ["timezone_type"]=> int(3) ["时区"]=> string(13) "欧洲/柏林" }

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

您能否详细说明为什么要详细讨论?