使用以下代码
protected $token;
/** @Column(name="assigneddate", type="datetime", columnDefinition="datetime") */
private $assigneddate;
/** @Column(name="expirydate", type="datetime", columnDefinition="datetime") */
private $expirydate;
/** @PreUpdate */
public function updated()
{
//$this->assigneddate = new \DateTime("now");
}
public function __construct()
{
$this->expirydate = $this->expirydate = new \DateTime("now");
$this->assigneddate = $this->assigneddate = new \DateTime("now");
}
如何为此添加2小时?
答案 0 :(得分:7)
这更像是一个PHP问题。要为DateTime PHP对象添加时间,请使用add method,它接受DateInterval对象。在您的情况下,如果您想在到期日期间增加2小时:
// Create DateTime object with current time/date
$this->expirydate = new \DateTime("now");
// Add two hours
$this->expirydate->add(new \DateInterval("PT2H"));
其中“PT2H”表示“2小时的周期时间”,具体为here。
答案 1 :(得分:2)
默认情况下,学说只允许间隔为DAY
,MONTH
和YEAR
。在尝试添加示例8 HOUR时,它会返回错误。
但你可以做到这一点:
Let 8 be the number of hours
Let 24 be the number of hours a day.
8/24 = decimal presentation of the hour.
$nHour = 8/24; //result will be: 0.3333333
然后在学说中使用它:
DATE_ADD(CURRENT_TIMESTAMP(), $nHour, 'DAY') as dateaddhour
答案 2 :(得分:1)
确定。这是PT2H。
$this->expirydate = new \DateTime("now");
// Add two hours
$this->expirydate->add(new \DateInterval("PT2H"));
答案 3 :(得分:0)
为实体方面已经给出的答案提供其他几种替代方案。
您不需要添加或修改日期,您可以使用相对格式创建新的DateTime对象http://php.net/manual/en/datetime.formats.relative.php
例如:last friday of june 2011
(2011-06-24)
对OP的行为或遇到问题的行为并不十分清楚,因此提供了一些方法。
如果想在创建对象时添加2小时
/**
* "now" is implicit
*/
public function __construct()
{
$this->assigneddate = new \DateTime;
$this->expirydate = new \DateTime('+2 hour');
}
或更新发生时
/**
* @PreUpdate
*/
public function updated()
{
$this->assigneddate = new \DateTime;
$this->expirydate = new \DateTime('+2 hour');
}
当在其上调用modified / add / sub时,确保在Doctrine中更新现有值的另一种方法。使用PHP 5.5
,您现在可以使用DateTimeImmutable
因此,如果您希望将expirydate
时间增加/修改2小时。
public function __construct()
{
$this->expirydate = new \DateTimeImmutable;
$this->assigneddate = new \DateTimeImmutable;
}
/**
* @PreUpdate
*/
public function updated()
{
$this->assigneddate = new \DateTimeImmutable;
$this->expirydate = $this->expirydate->modify('+2 hour');
}
这将导致expirydate
向现有的expirydate添加2个小时,因为DateTimeImmutable
将始终返回一个新对象,然后该教条将处理。
http://php.net/manual/en/class.datetimeimmutable.php