1

我将记录存储在 EST 时区而不是 UTC,因为我几乎不需要使用 UTC。最近虽然我需要在 UTC 中生成报告。

我计算了我网站上的“点击次数”,这就是我获取昨天点击总数的方式: Click::where('created_at', '>=', Carbon::now()->yesterday())->where('created_at', '<=', Carbon::now()->startOfDay())->count();

这很好用,但现在我需要获得“昨天在 UTC”的点击总数——有没有一种简单的方法可以使用 eloquent / carbon 来做到这一点?

4

1 回答 1

1

假设您在数据库中的记录存储为您提到的 EST,那么您将需要执行以下操作。

// Get the start and end times you want in UTC
$start = Carbon::yesterday('UTC');
$end = Carbon::yesterday('UTC')->endOfDay();

// Convert those times to EST
$start->timezone('EST');
$end->timezone('EST');

// Now query the number of clicks, 'whereBetween' is a great little shortcut 
// for querying over a range
Click::whereBetween('created_at', [$start, $end])->count();

请注意,carbon 是一个流畅的 API,因此您可以将其简化为;

$start = Carbon::yesterday('UTC')->timezone('EST');
$end = Carbon::yesterday('UTC')->endOfDay()->timezone('EST');

完全取决于您希望代码如何阅读。

另外,如果未提供, Carbon::now()and 构建器将使用 php.ini 中指定的默认时区。Carbon::yesterday()

于 2015-07-13T23:53:18.137 回答