diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php
index 59f3b3f3856..9b5d411b136 100644
--- a/htdocs/admin/system/dolibarr.php
+++ b/htdocs/admin/system/dolibarr.php
@@ -155,7 +155,8 @@ print '
| '.$langs->trans("CurrentTimeZone").' | '; // Timezone server PHP
$a=getServerTimeZoneInt('now');
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 8629d7c73e3..1d122a6c6f1 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -200,7 +200,12 @@ class Conf
}
//var_dump($this->modules);
//var_dump($this->modules_parts['theme']);
-
+
+ // If you can't set timezone of your PHP, set this constant. Better is to set it to UTC.
+ // In future, this constant will be forced to 'UTC' so PHP server timezone will not have effect anymore.
+ //$this->global->MAIN_SERVER_TZ='Europe/Paris';
+ if (! empty($this->global->MAIN_SERVER_TZ) && $this->global->MAIN_SERVER_TZ != 'auto') date_default_timezone_set($this->global->MAIN_SERVER_TZ);
+
// Object $mc
if (! defined('NOREQUIREMC') && ! empty($this->multicompany->enabled))
{
diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php
index 18c6bc23148..8a1c35ace9c 100644
--- a/htdocs/core/lib/date.lib.php
+++ b/htdocs/core/lib/date.lib.php
@@ -69,8 +69,7 @@ function get_tz_array()
*/
function getServerTimeZoneString()
{
- if (function_exists('date_default_timezone_get')) return @date_default_timezone_get();
- else return '';
+ return @date_default_timezone_get();
}
/**
@@ -96,7 +95,7 @@ function getServerTimeZoneInt($refgmtdate='now')
}
else
{
- dol_print_error('','PHP version must be 5.2+');
+ dol_print_error('','PHP version must be 5.3+');
/*
// Method 2 (does not include daylight, not supported by adodb)
if ($refgmtdate == 'now')
@@ -126,45 +125,6 @@ function getServerTimeZoneInt($refgmtdate='now')
return $tz;
}
-/**
- * Return server timezone string
- *
- * @return string Parent company timezone string ('Europe/Paris')
- *
-function getParentCompanyTimeZoneString()
-{
- if (function_exists('date_default_timezone_get')) return @date_default_timezone_get();
- else return '';
-}
-*/
-
-/**
- * Return parent company timezone int.
- * If $conf->global->MAIN_NEW_DATE is set, we use new behaviour: All convertions take care of dayling saving time.
- *
- * @param string $refgmtdate Reference date for timezone (timezone differs on winter and summer)
- * @return int An offset in hour (+1 for Europe/Paris on winter and +2 for Europe/Paris on summer)
- *
-function getParentCompanyTimeZoneInt($refgmtdate='now')
-{
- global $conf;
- if (class_exists('DateTime'))
- {
- // Method 1 (include daylight)
- $localtz = new DateTimeZone(getParentCompanyTimeZoneString());
- $localdt = new DateTime($refgmtdate, $localtz);
- $tmp=-1*$localtz->getOffset($localdt);
- }
- else
- {
- dol_print_error('','PHP version must be 5.2+');
- // Method 2 (does not include daylight)
- $tmp=dol_mktime(0,0,0,1,1,1970);
- }
- $tz=($tmp<0?1:-1)*abs($tmp/3600);
- return $tz;
-}*/
-
/**
* Add a delay to a date
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 79d169513d0..d02633c2d04 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -1027,14 +1027,7 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1)
{
if (empty($gm) || $gm === 'server')
{
- // If you can't set timezone of your PHP, set this constant. Better is to set it to UTC.
- // In future, this constant will be forced to 'UTC' so PHP server timezone will not have effect anymore.
- if (! empty($conf->global->MAIN_SERVER_TZ))
- {
- if ($conf->global->MAIN_SERVER_TZ != 'auto') $default_timezone=$conf->global->MAIN_SERVER_TZ;
- else $default_timezone=@date_default_timezone_get();
- }
- else $default_timezone=@date_default_timezone_get();
+ $default_timezone=@date_default_timezone_get();
$localtz = new DateTimeZone($default_timezone);
}
else if ($gm === 'user')
diff --git a/test/phpunit/FunctionsLibTest.php b/test/phpunit/FunctionsLibTest.php
index cbfab3d69c9..ad46b7e5def 100755
--- a/test/phpunit/FunctionsLibTest.php
+++ b/test/phpunit/FunctionsLibTest.php
@@ -368,7 +368,13 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase
public function testDolMkTime()
{
global $conf;
-
+
+ $savtz=date_default_timezone_get();
+
+ // Some test for UTC TZ
+ date_default_timezone_set('UTC');
+
+ // Check bad hours
$result=dol_mktime(25,0,0,1,1,1970,1,1); // Error (25 hours)
print __METHOD__." result=".$result."\n";
$this->assertEquals('',$result);
@@ -394,17 +400,20 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase
$tz=getServerTimeZoneInt('winter'); // +1 in Europe/Paris at this time (this time is winter)
$this->assertEquals(7200-($tz*3600),$result); // 7200 if we are at greenwich winter, 7200-($tz*3600) at local winter
+ // Some test for local TZ Europe/Paris
+ date_default_timezone_set('Europe/Paris');
+
// Check that tz for paris in winter is used
- $conf->global->MAIN_SERVER_TZ='Europe/Paris';
$result=dol_mktime(2,0,0,1,1,1970,'server'); // 1970-01-01 02:00:00 = 7200 in local area Europe/Paris = 3600 GMT
print __METHOD__." result=".$result."\n";
$this->assertEquals(3600,$result); // 7200 if we are at greenwich winter, 3600 at Europe/Paris
// Check that daylight saving time is used
- $conf->global->MAIN_SERVER_TZ='Europe/Paris';
$result=dol_mktime(2,0,0,6,1,2014,0); // 2014-06-01 02:00:00 = 1401588000-3600(location)-3600(daylight) in local area Europe/Paris = 1401588000 GMT
print __METHOD__." result=".$result."\n";
$this->assertEquals(1401588000-3600-3600,$result); // 1401588000 are at greenwich summer, 1401588000-3600(location)-3600(daylight) at Europe/Paris summer
+
+ date_default_timezone_set($savtz);
}
|