我在云平台上发布了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->现在给出了错误的时区,即使我在碳对象中也设置了时区....
答案 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)