PHP脚本更改服务器时间

时间:2020-10-06 01:46:54

标签: php server

我对某些客户端网站使用HostGator,这是共享的云服务器设置。我需要运行此脚本:

raise SpecialException.from(e)

因为服务器时间设置为不在美国附近的​​时区。.我如何执行该脚本,以使服务器时间改变。.他们不支持(HostGator)服务器时间的改变,但建议运行上面的脚本。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

假设服务器在世界各地的不同地区运行,则它们的日期时间都将不同,具体取决于它们的时区。当您迁移到位于不同时区的服务器时会发生什么?您所有的日期时间都会改变,这可能会导致一些非常严重的问题。

您可能还会遇到以下情况:应用程序服务器(例如PHP)在一个时区中运行,而数据库服务器(例如PostgreSQL)在单独的时区中运行-那么,在某些日期时间该怎么办?可能是由PHP生成的,而其他是由PostgreSQL生成的?

答案是考虑timezones

诸如PHP和Python之类的编程语言以及诸如MySQL和PostgreSQL之类的数据库都不仅具有在特定于服务器的严格时间上工作的能力,而且还能够在更灵活的时区中工作。

在PostgreSQL之类的数据库中,您可以将数据类型设置为timestamp with time zone

在PHP中,您可以使用时区来修复服务器默认显示的日期时间与用户期望的日期之间的时间差。

这是PHP中的示例,使您能够:

  • 获取服务器的当前日期时间
  • 将服务器的日期时间转换为用户所在的时区
  • 向用户显示转换后的日期时间
<?php
// Set the user's timezone:
$user_timezone = 'America/Detroit';

// Get the current datetime
$datetime = new DateTime();

// Display the server's datetime in human-readable and UNIX timestamp formats
print(
    "\nServer's Datetime: " . $datetime->format('Y-m-d H:i:s') . "" .
    "\nServer's Timestamp: " . $datetime->getTimestamp() . "" .
);

// Instantiate a DateTimeZone object representing the user's timezone
$timezone = new DateTimeZone( $user_timezone );

// Set the timezone on that datetime to be the user's timezone
$datetime->setTimezone( $timezone );

// Display the converted datetime to the user in human-readable format:
print(
    "\nUser's Datetime: " . $datetime->format('Y-m-d H:i:s') . "" .
    "\nUsers's Timestamp: " . $datetime->getTimestamp() . "" .
);
?>

免责声明,我没有测试以上任何代码,仅从PHP参考资料构建而成:

如果您不确定应将$user_timezone设置为什么,请在php中运行以下命令并查看输出:

<?php
print_r(
    timezone_identifiers_list()
);
>?>