如何从服务器获取日期和时间

use*_*406 21 php datetime

我想从服务器检索日期和时间,并根据它做一些事情.为此,我使用以下代码:

$info = getdate();
$date = $info['mday'];
$month = $info['mon'];
$year = $info['year'];
$hour = $info['hours'];
$min = $info['minutes'];
$sec = $info['seconds'];

$current_date = "$date/$month/$year == $hour:$min:$sec";
Run Code Online (Sandbox Code Playgroud)

这段代码返回正确的日期,但问题是我在cpanel(服务器时间)中看到的是diff.比我从代码中得到的.在cpanel时间是CDT,而从代码它显示UTC,我使用以下代码再次确认

<?php echo date("r == e"); ?>
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及我在代码中需要做哪些更改才能获得适当的服务器时间.

She*_*hef 56

你应该设置时区到的一个时区,你想要的.

// set default timezone
date_default_timezone_set('America/Chicago'); // CDT

$info = getdate();
$date = $info['mday'];
$month = $info['mon'];
$year = $info['year'];
$hour = $info['hours'];
$min = $info['minutes'];
$sec = $info['seconds'];

$current_date = "$date/$month/$year == $hour:$min:$sec";
Run Code Online (Sandbox Code Playgroud)

或者更短的版本:

// set default timezone
date_default_timezone_set('America/Chicago'); // CDT

$current_date = date('d/m/Y == H:i:s');
Run Code Online (Sandbox Code Playgroud)


Roh*_*har 7

试试这个 -

<?php
date_default_timezone_set('Asia/Kolkata');

$timestamp = time();
$date_time = date("d-m-Y (D) H:i:s", $timestamp);
echo "Current date and local time on this server is $date_time";
?>
Run Code Online (Sandbox Code Playgroud)


Nas*_*ibi 5

无需使用date_default_timezone_set整个脚本,只需使用timezoneDateTime对象指定所需的对象即可:

$now = new DateTime(null, new DateTimeZone('America/New_York'));
$now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
echo $now->format("Y-m-d\TH:i:sO"); // something like "2015-02-11T06:16:47+0100" (ISO 8601)
Run Code Online (Sandbox Code Playgroud)