DateTimeFactory =============== * Published: 2019-08-18 * Author: Nickolas Burr .. contents:: Table of Contents :local: Related ------- * :doc:`DataObjectFactory` * :doc:`ExceptionFactory` Description ----------- The ``DateTime`` [#ref1]_ class is a built-in PHP class used extensively throughout Magento. In fact, Magento has several wrapper classes to assist with creating ``DateTime`` objects, as well as formatting subsequent date/time values. Such classes include: * ``Magento\Framework\Stdlib\DateTime`` * ``Magento\Framework\Stdlib\DateTime\DateTime`` * ``Magento\Framework\Stdlib\DateTime\DateTimeFormatter`` In the example below, we use ``DateTimeFactory`` to create ``DateTime`` objects, which we'll use to modify the ``updated_at`` timestamp of an entry when a user makes an edit. Usage ----- .. code-block:: php dateTimeFactory = $dateTimeFactory; $this->entityRepository = $entityRepository; $this->formKeyValidator = $formKeyValidator; } /** * @return Magento\Framework\Controller\Result\Redirect */ public function execute() { /** @var RequestInterface $request */ $request = $this->getRequest(); /** @var Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); if (!$request->isPost() || !$this->formKeyValidator->validate($request)) { $resultRedirect->setPath('*/*/edit'); return $resultRedirect; } /** @var int|string|null $entityId */ $entityId = $request->getParam('entity_id'); $entityId = $entityId !== null && is_numeric($entityId) ? (int) $entityId : null; if ($entityId !== null) { try { /** @var EntityInterface $entity */ $entity = $this->entityRepository->getById($entityId); $this->entityRepository->save( $entity->setUpdatedAt($this->dateTimeFactory->create()) ); } catch (NoSuchEntityException $e) { $this->messageManager->addErrorMessage($e->getMessage()); } catch (LocalizedException $e) { $this->messageManager->addErrorMessage($e->getMessage()); } } $resultRedirect->setPath('*/*/index'); return $resultRedirect; } } Notes ----- .. |link1| replace:: ``DateTime`` .. _link1: https://www.php.net/manual/en/class.datetime.php .. [#ref1] |link1|_