Laravel 5代碳日期时间与时区

时间:2016-07-06 17:08:11

标签: laravel-5 php-carbon

我在云平台上发布了ERP网站,我想为用户指定的时区生成日期时间。

我正在使用碳日期时间库进行转换。但是当我转换时,它给了我更大的问题。

$carbon = new Carbon();
$carbon->setTimezone('Asia/colombo');
echo $carbon;           //output is  : 2016-07-06 22:33:05 | Asia/colombo
BUT
echo $carbon->now()     // output is : 2016-07-06 17:03:05 | UTC
  

为什么 $ carbon->现在给出了错误的时区,即使我在碳对象中也设置了时区....

抱歉,如果我的想法错误.........

2 个答案:

答案 0 :(得分:2)

Carbon::now是一个静态函数,您可以在对象上调用它,但仍然是一个静态函数。没有从中提取时区信息的基础对象。您需要执行此操作:Carbon::now('Asia/colombo')

答案 1 :(得分:1)

如果在对象上使用Carbon的setTimezone()函数,则只应在该对象上调用非静态函数。

手动应用时区后,只需使用非静态输出功能。

一些例子:

// without parameters it is now() !
$carbon = new Carbon\Carbon();
$carbon->setTimezone('Asia/colombo');
echo $carbon->toDateTimeString()."<br>";
// custom output format
echo $carbon->format('d.m.Y H:i:s')."<br>";

$carbon->setTimezone('Europe/Berlin');
echo $carbon->toDateTimeString()."<br>";
// custom output format
echo $carbon->format('d.m.Y H:i:s')."<br>";


// or pass something compatible to http://php.net/manual/en/datetime.construct.php
$carbon = new Carbon\Carbon('24.12.2015 20:13');
$carbon->setTimezone('Asia/colombo');
echo $carbon->toDateTimeString()."<br>";
// custom output format
echo $carbon->format('d.m.Y H:i:s')."<br>";

$carbon->setTimezone('Europe/Berlin');
echo $carbon->toDateTimeString()."<br>";
// custom output format
echo $carbon->format('d.m.Y H:i:s')."<br>";

静态方法将使用config / app.php中定义的时区(默认值:UTC)