我尝试打印我的应用程序的用户生日,数据库中允许的日期。 在DB中,用户#37的生日时间为'1900-01-01'。
用户模型定义,生日,访问者和属性如下:
/**
* @ORM\Column(type="date")
*/
protected $fechaDeNacimiento;
/**
* @param \DateTime $fechaDeNacimiento
* @return User
*/
public function setFechaDeNacimiento($fechaDeNacimiento)
{
$this->fechaDeNacimiento = $fechaDeNacimiento;
return $this;
}
/**
* @return \DateTime
*/
public function getFechaDeNacimiento()
{
return $this->fechaDeNacimiento;
}
用Twig写道:
{{ user.fechaDeNacimiento | date("m-d-Y")}}
但结果不是'01 -01-1900',是'12 -31-1899'。格式正确,但日期不正确。
任何想法?。
答案 0 :(得分:1)
这是由于leap second。
闰秒是偶尔应用的一秒调整 协调世界时(UTC)以保持其时间 接近平均太阳时。
具体地说,在第二个之间插入正闰秒 所选UTC日历日期的23:59:59(一个月的最后一天, 通常在6月30日或12月31日)和第二个00:00:00以下 日期。
事实上,12-31-1899
中引用了here的闰秒。
大多数数据库支持时区闰秒,例如MySQL
为了给您一个想法,以下是2008-12-31
That's a perfect example in 2008:
mysql> CREATE TABLE t1 (
-> a INT,
-> ts TIMESTAMP DEFAULT NOW(),
-> PRIMARY KEY (ts)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> -- change to UTC
mysql> SET time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)
mysql> -- Simulate NOW() = '2008-12-31 23:59:59'
mysql> SET timestamp = 1230767999;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t1 (a) VALUES (1);
Query OK, 1 row affected (0.00 sec)
mysql> -- Simulate NOW() = '2008-12-31 23:59:60'
mysql> SET timestamp = 1230768000;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO t1 (a) VALUES (2);
Query OK, 1 row affected (0.00 sec)
mysql> -- values differ internally but display the same
mysql> SELECT a, ts, UNIX_TIMESTAMP(ts) FROM t1;
+------+---------------------+--------------------+
| a | ts | UNIX_TIMESTAMP(ts) |
+------+---------------------+--------------------+
| 1 | 2008-12-31 23:59:59 | 1230767999 |
| 2 | 2008-12-31 23:59:59 | 1230768000 |
+------+---------------------+--------------------+
2 rows in set (0.00 sec)
mysql> -- only the non-leap value matches
mysql> SELECT * FROM t1 WHERE ts = '2008-12-31 23:59:59';
+------+---------------------+
| a | ts |
+------+---------------------+
| 1 | 2008-12-31 23:59:59 |
+------+---------------------+
1 row in set (0.00 sec)