Symfony2-Doctrine светильники createdAt, появляющиеся как час раньше фактического времени
Раньше со мной такого не случалось, но я только что заметил, что вся моя фиктивная информация о приспособлении (сообщения) появляется с созданным временем на час раньше фактического времени?
Когда я вручную ввожу в пост правильное время.
Любая идея, что является причиной этого?
Я использую файл сущности с временной меткой для createdAt и updatedAt, который расширяется моей сущностью Post. Файл сущности с временной меткой использует stof / doctrine-extensions-bundle.
Объект с временной меткой
use DoctrineORMMapping as ORM;
use GedmoMappingAnnotation as Gedmo;
/**
* Timestampable abstract class to define created and updated behavior
*
* @ORMMappedSuperclass
*/
abstract class Timestampable
{
/**
* @var DateTime
*
* @GedmoTimestampable(on="create")
* @ORMColumn(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @var DateTime
*
* @GedmoTimestampable(on="update")
* @ORMColumn(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;
}
}
Приспособление столба:
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.)
}
1 ответ:
Похоже, у вас проблема с часовыми поясами против
Timestampable
. Данные вашего прибора хранятся в часовом поясеUTC
.Смотрите этот пост (читайте комментарии о часовых поясах):
Symfony2 datetime лучший способ хранения меток времени?В этом посте выше есть ссылка на интересную запись в блоге, которая может помочь вам найти решение, которое наилучшим образом соответствует вашему сценарию.:
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 ); }