Đã thấy câu trả lời với giải pháp bù và tôi nghĩ rằng trừ khi bạn tiết kiệm thời gian của bạn trong cơ sở dữ liệu trong UTC hoặc UNIX Dấu thời gian, họ sẽ không giúp đỡ. Vấn đề, khi nói đến GetTimestamp (), là múi giờ không được xem xét ngay cả khi bạn bắt đầu đối tượng ... làm thế nào để giải thích nó :) ... giả sử bạn có một số sự kiện với ngày và thời gian trong bạn DB . Bạn cũng có thời gian được cấu hình chính xác. Tôi sẽ đặt những thứ này vào VAR cho ví dụ này, vì vậy nó có thể thấy rõ hơn:
$dateTime = '25.08.2018 16:45:15';//some event in your db //can be any valid format $localTimezone = 'Europe/Berlin'; $dateTimeLocal = new \DateTime($dateTime, new \DateTimeZone($localTimezone)); var_dump($dateTimeLocal->getTimestamp());`Bây giờ ... khi bạn làm điều này, bạn chuyển DateTime và múi giờ của bạn cho hàm tạo. Những gì bạn mong đợi là PHP tôn trọng múi giờ của bạn và bạn nhận được dấu thời gian UTC tương ứng với 16:45 ở Berlin, đó sẽ là UTC 15:45 vào mùa đông và UTC 14:45 vào mùa hè. Nó sẽ không xảy ra - những gì bạn nhận được là dấu thời gian tương ứng với UTC 16:45. Nếu bạn thêm phần bù bây giờ bạn sẽ nghỉ một hoặc hai giờ.
Cách chính xác để thực hiện điều này là bắt đầu đối tượng, đặt/chuyển thời gian, tạo một datetime được định dạng để tôn trọng múi giờ và sau đó nhận dấu thời gian từ DateTime được định dạng. Nó có thể chậm hơn một chút, nhưng đó là múi giờ không chứng minh được:
$date = '25.08.2018 16:45:15';//some event in your db //can be any valid format $format = 'Y-m-d H:i:s';//just a format we will use for this example //also can be any valid format $localTimezone = 'Europe/Berlin'; $remoteTimezone = 'America/Lima'; $dateTime = new \DateTime($date, new \DateTimeZone($localTimezone)); $dateTime->setTimezone(new \DateTimeZone($remoteTimezone)); $timestampLima = DateTime::createFromFormat($format, $dateTime->format($format))->getTimestamp();DateTimeImmutable::getTimezone
DateTime::getTimezone
date_timezone_get
(Php 5> = 5.2.0, Php 7, Php 8)
Datetimeinterface :: getTimezone - datetimeMutable :: getTimezone - datetime :: getTimezone - date_timezone_get - return Time múi múi thời gian liên quan đến DateTime đã cho -- DateTimeImmutable::getTimezone -- DateTime::getTimezone -- date_timezone_get — Return time zone relative to given DateTime
Sự mô tả
Phong cách hướng đối tượng
PublicDateTimeInterface :: GetTimeZone (): Datetimezone | Sai DateTimeInterface::getTimezone(): DateTimeZone|false
publicDateTimeMmutable :: getTimezone (): datetimezone | false DateTimeImmutable::getTimezone(): DateTimeZone|false
publicDateTime :: getTimezone (): datetimezone | false DateTime::getTimezone(): DateTimeZone|false
Trả về giá trị
Trả về một đối tượng Datetimezone khi thành công hoặc false khi thất bại.DateTimeZone object on success or false on failure.
Ví dụ
Ví dụ #1 Thời gian () Ví dụDateTime::getTimezone() example
Phong cách hướng đối tượng
<?php
$date = new DateTimeImmutable(null, new DateTimeZone('Europe/London'));
$tz = $date->getTimezone();
echo $tz->getName();
?>
PublicDateTimeInterface :: GetTimeZone (): Datetimezone | Sai
<?php
$date = date_create(null, timezone_open('Europe/London'));
$tz = date_timezone_get($date);
echo timezone_name_get($tz);
?>
publicDateTimeMmutable :: getTimezone (): datetimezone | false
publicDateTime :: getTimezone (): datetimezone | false
(Php 4, Php 5, Php 7, Php 8)
Thời gian - Trả lại dấu thời gian UNIX hiện tại — Return current Unix timestamp
Sự mô tả
thời gian (): int(): int
Ghi chú::
Dấu thời gian UNIX không chứa bất kỳ thông tin nào liên quan đến bất kỳ timezone địa phương nào. Nên sử dụng lớp DateTimeMimTable để xử lý thông tin ngày và thời gian để tránh những cạm bẫy đi kèm với dấu thời gian UNIX.DateTimeImmutable class for handling date and time information in order to avoid the pitfalls that come with just Unix timestamps.
Thông số
Chức năng này không có tham số.
Trả về giá trị
Trả về dấu thời gian hiện tại.
Ví dụ
Ví dụ #1 Thời gian () Ví dụtime() example
<?php
echo 'Now: '. time();
?>
Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:
Ghi chú
Xem thêm
- Datetimeimmutable
- date () - định dạng dấu thời gian unix
- Microtime () - Trả về dấu thời gian UNIX hiện tại với micro giây