PHP:如何从服务器读取当前日期/时间,而不是从php.ini读取

时间:2012-03-21 15:04:37

标签: php datetime

这是我的问题:

echo date('Y-m-d H:i:s'); 
echo date('Y-m-d H:i:s', mktime());  

echo exec('date');

输出结果为:

2012-03-21 08:45:51
2012-03-21 08:45:51

Wed Mar 21 10:45:51 EDT 2012

服务器时间与php date()返回的时间相差2小时;或任何其他PHP日期/时间功能。这是因为服务器时间设置为EST和PHP.INI date.timezone =“America / Denver”

我需要使用date_default_timezone_set来同步这两个,但我事先并不知道有什么区别。

除了调用exec之外,还有其他方法可以获得本地服务器时间吗?

UPD:我知道php.ini设置错误,我可以更改它。问题是这个脚本可以工作,没人知道什么样的服务器。我不能去他们每一个并纠正php.ini文件。我也不知道这些服务器上会有什么时区。我需要一个可以在任何地方使用的动态解决方案。

4 个答案:

答案 0 :(得分:2)

您可以更改ini日期时区并打印日期

ini_set('date.timezone', 'America/Los_Angeles');

答案 1 :(得分:2)

Change value of date.timezone from php.ini [Date] and restart your server.
You can get your date.timezone value form-
http://au.php.net/manual/en/timezones.php


For Bangladesh I set in my php.ini [Date]
date.timezone = Asia/Dhaka


You get your php.ini in C:\xampp\php address for XAMP server and Windows.

答案 2 :(得分:0)

OR

一些主持人可以编辑php.iniphp config

中查找cpanel

答案 3 :(得分:0)

在* nix上,您可以使用格式参数date来获取所需内容:

  • date +%z - 时区(hhmm)
  • date +%:z - 时区(hh:mm)
  • date +%Z - 时区缩写(例如“EDT”)

进行系统调用(例如echo exec('date +%z');)将根据date_default_timezone_get绕过任何INI设置。请注意,如果此函数从系统时间读取,则会发出E_WARNING,实际上从PHP 5.4开始,它甚至不允许从中读取 - 特别是因为它不能被依赖。

为了保持一致,无论服务器设置如何,都应在应用程序中使用UTC。为了便于使用,GMT在大多数情况下都接近UTC,因此您可以使用gmdate()