本地时间与服务器时间的碳时差
Carbon Time Difference of Local Time and Server Time
我正在使用 Laravel 4 并尝试计算服务器上的时间和数据库中的时间节省(以小时为单位)的差异。这是代码:
服务器时间=timeNowOnServer // 2016-02-03 19:05:43
保存在数据库中的时间 = setTime // 18:00:00
$timeNowOnServer = null;
$setTime = null;
$timeZone = $company->time_zone;
$company->save();
// My Time
$hour = substr($company->emp_auto_logout_time, 0, 2);
$setTime = Carbon::createFromTime($hour);
// Server Time Same as Mine
$timeNowOnServer = Carbon::now();
$timeNowOnServerSameAsMine = $timeNowOnServer->setTimezone($timeZone);
// Time Differnce Between SetTime and TimeOnServerSameAsMine
$timeDiff = $setTime->diffInHours($timeNowOnServerSameAsMine, $abs = false);
例如,如果 Server Time
是 14:00:00,而 Set Time
是 19:00:00。我的时区是 GMT +5 Pakistan
.
我正在做的是,根据用户时间添加设置 Server Time
,方法是在上面给定代码的最后 3 行中给出 time zone
。
当我使用 diffInHour
时,它不是给我 0,而是给我 -5 或 5。这意味着它正在使用 UTC (Server Time)
,这就是为什么给出错误的小时差。
谁能告诉我哪里错了?
您正在尝试区分不同时区的时间。时差(间隔)是一个绝对值,与时区无关。一秒总是一秒,无论是 UTC
还是 Europe/Moscow
.
尝试不带时区(正确 - 使用默认服务器的时区)
$timeDiff = $setTime->diffInHours($timeNowOnServer, $abs = false);
对于两个 DT 值,始终使用时间戳或相同的时区(无关紧要是哪个时区)来计算间隔。
我正在使用 Laravel 4 并尝试计算服务器上的时间和数据库中的时间节省(以小时为单位)的差异。这是代码:
服务器时间=timeNowOnServer // 2016-02-03 19:05:43 保存在数据库中的时间 = setTime // 18:00:00
$timeNowOnServer = null;
$setTime = null;
$timeZone = $company->time_zone;
$company->save();
// My Time
$hour = substr($company->emp_auto_logout_time, 0, 2);
$setTime = Carbon::createFromTime($hour);
// Server Time Same as Mine
$timeNowOnServer = Carbon::now();
$timeNowOnServerSameAsMine = $timeNowOnServer->setTimezone($timeZone);
// Time Differnce Between SetTime and TimeOnServerSameAsMine
$timeDiff = $setTime->diffInHours($timeNowOnServerSameAsMine, $abs = false);
例如,如果 Server Time
是 14:00:00,而 Set Time
是 19:00:00。我的时区是 GMT +5 Pakistan
.
我正在做的是,根据用户时间添加设置 Server Time
,方法是在上面给定代码的最后 3 行中给出 time zone
。
当我使用 diffInHour
时,它不是给我 0,而是给我 -5 或 5。这意味着它正在使用 UTC (Server Time)
,这就是为什么给出错误的小时差。
谁能告诉我哪里错了?
您正在尝试区分不同时区的时间。时差(间隔)是一个绝对值,与时区无关。一秒总是一秒,无论是 UTC
还是 Europe/Moscow
.
尝试不带时区(正确 - 使用默认服务器的时区)
$timeDiff = $setTime->diffInHours($timeNowOnServer, $abs = false);
对于两个 DT 值,始终使用时间戳或相同的时区(无关紧要是哪个时区)来计算间隔。