简体   繁体   English

Laravel 获取 TimeZone 不工作

[英]Laravel get TimeZone not working

Iam trying to convert UTC timezone to Singapore Time我正在尝试将UTC时区转换为Singapore Time

    echo $Date->format('Y-m-d H:i:s');
    echo '<br>'; 
    echo with(new Carbon\Carbon($Date->format('Y-m-d H:i:s')))->tz('Asia/Singapore')->format('Y-m-d H:i:s');
    exit;

it works fine in Localhost but in aws server it displays utc Time for both...Both server and Localhost is set to UTC Time.. how do we fix this??它在Localhost中工作正常,但在aws server中它显示utc Time ...服务器和 Localhost 都设置为UTC时间。我们如何解决这个问题?

I assume that $Date in your case is DateTime object (or Carbon object). 我假设$Date在您的情况下是DateTime对象(或Carbon对象)。 You can use PHP setTimeZone() and DateTimeZone : 您可以使用PHP setTimeZone()DateTimeZone

$Date = new DateTime($user->updated_at); // sample DateTime creation - also $Date = $user->updated_at; would work here

echo $Date->format("Y-m-d H:i:s")."<br />";

$Date->setTimezone(new DateTimeZone('Asia/Singapore'));
echo  $Date->format("Y-m-d H:i:s")."<br />";

For me it generates: 对我来说,它生成:

2014-09-19 12:06:15
2014-09-19 20:06:15

I assumed that, the $Date variable you have is a Carbon (By default available in Laravel ) object: 我假设您拥有的$Date变量是Carbon (默认情况下,在Laravel可用)对象:

$Date->format('Y-m-d H:i:s');

Now to set the timezone you may use any one of these: 现在设置timezone您可以使用以下任何一种:

$Date->timezone = new DateTimeZone('Asia/Singapore');
$Date->timezone = 'Asia/Singapore';
$Date->tz = 'Asia/Singapore';

You may also set it from your app/config/app.php like: 您也可以从app/config/app.php例如:

/*
|--------------------------------------------------------------------------
| Application Timezone
|--------------------------------------------------------------------------
|
| Here you may specify the default timezone for your application, which
| will be used by the PHP date and date-time functions. We have gone
| ahead and set this to a sensible default for you out of the box.
|
*/

'timezone' => 'Asia/Singapore',

You can set to session like below;您可以像下面这样设置为 session;

 Session::put('timezone', 'Your/TimeZone');

Enjoy your Code !享受你的代码!

Try this it will work 试试这个会起作用

 $timestamp ='1411205843'  //Timestamp which you need to convert 

 $sourceTimezone = new DateTimeZone('UTC');

 $destinationTimezone = new DateTimeZone('Asia/Singapore'); 

 $dt = new DateTime(date('m/d/Y h:i A', $timestamp), $sourceTimezone);
 $dt->setTimeZone($destinationTimezone);

 echo strtotime($dt->format('m/d/Y h:i A'));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM