基于时区的 Carbon 对象转换为 Unix 时间戳

11

我有一个时间字符串,格式为'Y-m-d 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 时间戳?
2个回答

23

在您的代码末尾添加时间戳即可。

$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;

尝试过了,但它显示错误异常信息为数据丢失 - Dinesh Gowda
代码已在 php artisan tinker 中进行了测试。您也应该能够获得结果。我怀疑你的代码的另一部分导致了错误。尝试运行你的 php artisan tinker - Shiro
是的,我在 Tinker 中尝试过,它可以工作。在代码中也做了同样的事情,但它说数据丢失。以下是正在使用的代码。 - Dinesh Gowda
$timestp = Carbon::createFromFormat('Y-m-d H:i:s' ,$trans['transaction_datetime'] ,Setting::get('timezone'))->timestamp; - Dinesh Gowda
你能展示一下 $trans['transaction_datetime'] 的输出吗?我更新了我的答案,你需要在日期数据中添加 Carbon::parse()。这样应该就可以了。 - Shiro

0

您可以使用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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接