Konvertieren Sie in Magento 2 Datum / Uhrzeit und Zeitzone in Datum / Uhrzeit

7

So konvertieren Sie datetime mit timezone in datetime. Ich habe mehrere ausprobiert, die auf PHP-Blog verfügbar sind. Aber nichts hat geklappt. Ich rufe datetime aus der MySql-Abfrage als 2017-01-20T13:59:19+03:00Format ab. Aber es zeigt die Zeitzone separat als +03:00. Eigentlich ist die richtige Zeit 2017-01-20 16:59:19.

Also , wie kann ich die richtige zeige Zeit mit GMT - Zeit in dem Datetime - Stempel hinzugefügt .

Pavan Kumar
quelle
Wie wäre es mit Ihrem Problem?
Khoa TruongDinh
Noch nicht gelöst. Ich versuche es immer noch mit anderen Möglichkeiten
Pavan Kumar,

Antworten:

3

1) Wir können das PHP Basic verwenden: http://php.net/manual/en/datetime.settimezone.php

<?php

$datetime = new DateTime('2017-01-20T13:59:19+03:00', new DateTimeZone('Europe/London'));

$datetime->setTimezone(new DateTimeZone('America/New_York'));
print $datetime->format('Y-m-d H:i:s (e)');
//Output 2017-01-20 05:59:19 (America/New_York)

Oder

$date = '2017-01-20T13:59:19+03:00';
$convertdate = (new \DateTime())->setTimestamp(strtotime($date));
$d = $convertdate->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT);
//Output string '2017-01-20 10:59:19'

2) Magento bietet einige Standard-Datums- und Zeitklassen an, die wir unter finden vendor/magento/framework/Stdlib/DateTime.

Zum Beispiel: Magento\Framework\Stdlib\DateTime\Timezone

Injizieren Sie \Magento\Framework\Stdlib\DateTime\TimezoneInterfacein unseren Konstruktor:

protected $timezone;

public function __construct(
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
......
)
{
    $this->timezone = $timezone;
}

Wir können benutzen:

$this->timezone->date($date)->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT);
Khoa TruongDinh
quelle
2

instanziieren

protected $_date;
 public function __construct(\Magento\Framework\Stdlib\DateTime\TimezoneInterface $date)
{
  $this->_date =  $date;
}

und in Ihrer Funktion verwenden

$this->_date->date()->format('d-m-Y H:i:s');
Prakhar Bhardwaj
quelle
2

Versuche dies

protected $timezone;

public function __construct(
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
......
)
{
    $this->timezone = $timezone;
}

$dateTimeZone = $this->timezone->date(new \DateTime($yourdate))->format('m/d/y H:i:s');
Sanjay Gohil
quelle
1

Versuche dies:

$timezoneInterface = new \Magento\Framework\Stdlib\DateTime\TimezoneInterface;
$dateTimeZone = $timezoneInterface->date($yourDate)->format('m/d/y H:i:s');
Mayers
quelle
1

Sie können die aktuelle Uhrzeit des Speicherdatums leicht \Magento\Framework\Stdlib\DateTime\TimezoneInterfaceabrufen, indem Sie in Ihren Klassenkonstruktor beispielsweise eine Instanz einfügen und diese verwenden, um das DateObject abzurufen.

Zum Beispiel:

protected $timezone;
public function __construct(
    ....
    \Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone,
    ....
) {
    ....
    $this->timezone = $timezone;
    ....
}

Und dann können Sie es wie folgt verwenden:

$date = $this->timezone->formatDate();

Weitere Informationen zu verschiedenen Formaten finden Sie in diesem Artikel, den ich unter https://codeblog.experius.nl/magento-2-get-current-store-date-time/ geschrieben habe.

Mr. Lewis
quelle
Vielen Dank an Mr. Lewis. Ich werde es durchgehen ..
Pavan Kumar
1
$date = '2018-01-29 13:10:20';
    $this->formatDate(
                    $this->_localeDate->date(new \DateTime($date)),
                    \IntlDateFormatter::MEDIUM,
                    true
                );
        public function formatDate(
            $date = null,
            $format = \IntlDateFormatter::SHORT,
            $showTime = false,
            $timezone = null
        ) {
            $date = $date instanceof \DateTimeInterface ? $date : new \DateTime($date);
            return $this->_localeDate->formatDateTime(
                $date,
                $format,
                $showTime ? $format : \IntlDateFormatter::NONE,
                null,
                $timezone
            );
        }
Jarik Bulba
quelle
0

Dieser arbeitet für mich

\Magento\Framework\Stdlib\DateTime\TimezoneInterface $timezone
$this->timezone = $timezone

$localizedDateTimeISO = $this->timezone->date(new \DateTime($repliedAt))->format(\Magento\Framework\Stdlib\DateTime::DATETIME_PHP_FORMAT);
Hiren Soni
quelle