【问题标题】:Carbon object to Unix timestamp based on timezoneCarbon 对象到基于时区的 Unix 时间戳
【发布时间】:2018-07-09 02:56:39
【问题描述】:

我有一个格式为“Ymd H:i:s”的日期时间字符串,日期时间值为“2018-01-30 07:11:21”。

$carbon_obj = Carbon::createFromFormat('Y-m-d H:i:s' , '2018-01-30 07:11:21','America/Chicago');

它如何从这个 carbon 对象中获取 Unix 时间戳?

【问题讨论】:

    标签: laravel-5 timezone unix-timestamp php-carbon


    【解决方案1】:

    只需在代码后面添加timestamp

    $carbon_obj = Carbon::createFromFormat('Y-m-d H:i:s' , '2018-01-30 07:11:21','America/Chicago')->timestamp;
    

    $carbon_obj = Carbon::createFromFormat('Y-m-d H:i:s' , '2018-01-30 07:11:21','America/Chicago');
    $carbon_obj->timestamp;
    

    如果您有data missing 错误。缺少它是您传递给它的数据不是完整的日期格式。

    试试这个。

    $timestp = Carbon::createFromFormat('Y-m-d H:i:s', Carbon::parse($trans['transaction_datetime']) ,Setting::get('timezone'))->timestamp;
    

    【讨论】:

    • 试过了,但它说错误 Exception with message Data missing
    • 代码在php artisan tinker中测试。你也应该能够得到结果。我怀疑您的代码的另一部分破坏了它。尝试运行您的php artisan tinker
    • 是的,我试过修补它,它可以工作。在代码中也在做同样的事情,但它说数据丢失。下面是正在使用的代码
    • $timestp = Carbon::createFromFormat('Y-m-d H:i:s' ,$trans['transaction_datetime'] ,Setting::get('timezone'))->timestamp;
    • 你能告诉我你的$trans['transaction_datetime'] 输出吗?我更新了我的答案,您在日期数据中添加了Carbon::parse()。它应该工作。
    【解决方案2】:

    您可以使用Carbon::shiftTimezone 更改时区,而无需更改日期和时间。

    $dt = Carbon::parse('2020-03-27');
    dump($dt);   //2020-03-27 00:00:00.0 Asia/Kolkata (+05:30)
    dump($dt->shiftTimezone('utc'));  //2020-03-27 00:00:00.0 UTC (+00:00)
    

    【讨论】:

      猜你喜欢
      • 2017-07-19
      • 1970-01-01
      • 2012-05-06
      • 2013-03-23
      • 1970-01-01
      • 2016-10-09
      • 2021-04-28
      • 1970-01-01
      • 2016-10-09
      相关资源
      最近更新 更多