【问题标题】:Laravel 5 generation carbon date time with timezoneLaravel 5 代碳日期时间与时区
【发布时间】:2016-11-08 20:15:12
【问题描述】:

我已经在云平台上发布了 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->now 给出了错误的时区,即使我也在 carbon 对象中设置了时区....

对不起,如果我想错了............

【问题讨论】:

    标签: laravel-5 php-carbon


    【解决方案1】:

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

    【讨论】:

    • 这意味着我应该为所有功能传递时区。
    • 不,您可以使用 $carbon->toDateTimeString(),就像他的回答中提到的 shock_gone_wild 一样。
    【解决方案2】:

    如果你在一个对象上使用 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)

    【讨论】:

    • 这样可以吗我可以使用 date_default_timezone_set($timeZone->name);
    • 我不会调用 date_default_timezone_set()... 而且我不会更改 Laravel 的全局时区以匹配当前用户的时区...只需将您的应用程序所需的所有日期存储在同一个格式化并将它们在输出时转换为用户时区...
    • 谢谢,看来这是一个很酷的主意。我还注意到更改 laraval 全球时区不是一个好主意。
    猜你喜欢
    • 2017-11-28
    • 2018-03-16
    • 1970-01-01
    • 2015-09-30
    • 2015-04-20
    • 2017-05-20
    • 2018-03-14
    • 2018-03-16
    • 1970-01-01
    相关资源
    最近更新 更多