gpt4 book ai didi

Symfony2 - Doctrine fixtures createdAt 比实际时间提前一个小时出现

转载 作者:行者123 更新时间:2023-12-02 03:35:06 26 4
gpt4 key购买 nike

我以前没有发生过这种情况,但我只是注意到我所有的虚拟 fixture 信息(帖子)都比实际时间提前一小时显示了 createdAt 时间?

当我手动输入帖子时,时间是正确的。

知道是什么原因造成的吗?

我正在为 createdAt 和 updatedAt 使用时间戳实体文件,我的 Post 实体正在扩展它。 Timestampable 实体文件正在使用 stof/doctrine-extensions-bundle。

时间戳实体

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;

/**
* Timestampable abstract class to define created and updated behavior
*
* @ORM\MappedSuperclass
*/
abstract class Timestampable
{
/**
* @var \DateTime
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;

/**
* @var \DateTime
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;

/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return Timestampable
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;

return $this;
}

/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt()
{
return $this->createdAt;
}

/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return Timestampable
*/
public function setUpdatedAt($updatedAt)
{
$this->updatedAt = $updatedAt;

return $this;
}

/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}

后 fixture :

public function load(ObjectManager $manager)
{
$post1 = new Post();
$post1->setCategory($this->getReference('category-1'));
$post1->addReply($this->getReference('reply-1'));
$post1->addReply($this->getReference('reply-2'));
$post1->addReply($this->getReference('reply-3'));
$post1->setTitle('Lorem Ipsum 1');
$post1->setAuthor('Foo1');
$post1->setBody('Lorem ipsum dolor sit amet, consectetur adipiscing elit.)
}

最佳答案

看起来您在时区与 Timestampable 方面存在问题。您的灯具数据存储在 UTC 时区。

请参阅此相关帖子(阅读有关时区的评论):
Symfony2 datetime best way to store timestamps?

上面这篇文章有一个有趣的博客条目的链接,可以帮助您找到最适合您的场景的解决方案:
https://matt.drollette.com/2012/07/user-specific-timezones-with-symfony2-and-twig-extensions/

编辑:

您可以使用 LifecycleCallback 为创建的值设置明确的时区。

/** 
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
**/

/*
...
*/

/**
* @ORM\PrePersist
*/
public function setCreatedValue()
{
$now = new \DateTime('now' , new \DateTimeZone('Europe/Berlin') );
$this->setCreated( $now );
}

关于Symfony2 - Doctrine fixtures createdAt 比实际时间提前一个小时出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24005968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com