如何在Laravel 5中使用Carbon获取当前时间戳

104

我想在Laravel 5中获取当前时间戳,我已经这样做了 -

$current_time = Carbon\Carbon::now()->toDateTimeString();

我遇到了错误- 'Carbon not found'-

图片描述

我该怎么办?

请问有人可以帮忙吗?

8个回答

243

如果你想要日期时间字符串,可以尝试这个:

use Carbon\Carbon;
$current_date_time = Carbon::now()->toDateTimeString(); // Produces something like "2019-03-11 12:25:00"

如果你需要时间戳,可以尝试如下:

use Carbon\Carbon;
$current_timestamp = Carbon::now()->timestamp; // Produces something like 1552296328

在此处查看官方Carbon文档.


44

对于 Laravel 5.5 或以上版本,只需使用内置的帮助程序即可。

$timestamp = now();

如果你想要一个Unix时间戳,你也可以尝试这样做:

$unix_timestamp = now()->timestamp;

2
这将返回一个Unix时间戳。只有 now() 将以典型的 2018-10-05 17:55:08 格式返回。 - Ryan DuVal
1
@futzlarson now() 实际上返回一个 Carbon 对象。如果你在 Blade 模板中输出它,它会被渲染成字符串,但它本质上是一个完整的、复杂的对象。 - ceejayoz
对于我的目的而言,“True”总是被渲染为字符串。 - Ryan DuVal

12

您需要在您的 carbon 类之前再添加一个 \ ,以便在根命名空间中启动。

$current_time = \Carbon\Carbon::now()->toDateTimeString();

另外,请确保在您的 composer.json 文件中加载了 Carbon。


我该如何在Composer中加载Carbon? - Abrar Jahin
通常情况下,Laravel会自动将Carbon添加到您的composer.json文件中。但是,如果您想确保它已安装,请在应用程序根目录的控制台中键入composer require nesbot/carbon进行安装。 - Jerodev

11

Laravel 5.2 <= 5.5

    use Carbon\Carbon; // You need to import Carbon
    $current_time = Carbon::now()->toDayDateTimeString(); // Wed, May 17, 2017 10:42 PM
    $current_timestamp = Carbon::now()->timestamp; // Unix timestamp 1495062127

此外,以下是如何在blade中更改给定日期和时间的datetime格式:

{{\Carbon\Carbon::parse($dateTime)->format('D, d M \'y, H:i')}}

Laravel 5.6以下版本

$current_timestamp = now()->timestamp;

8

在类声明前加一个\,你就是在调用根命名空间:

$now = \Carbon\Carbon::now()->timestamp;

否则它会在类开始处声明的当前命名空间中查找。另一种解决方案是使用它:
use Carbon\Carbon
$now = Carbon::now()->timestamp;

你甚至可以给它分配一个别名:

use Carbon\Carbon as Time;
$now = Time::now()->timestamp;

希望能有所帮助。

2
可能有点晚了,但您可以使用辅助函数 time() 来获取当前时间戳。我尝试了这个函数并且它能胜任工作,不需要类 :).
您可以在官方文档的https://laravel.com/docs/5.0/templates找到它。
祝好。

1

使用 Carbon 生成时间戳的最佳方式如下:

use Carbon\Carbon
$now = Carbon::now()->getTimestamp(); // timestamp (seconds)
$now = Carbon::now()->getTimestampMs(); // timestamp (milliseconds)

适用于 Laravel 5、6、7、8、9 和 10(截至撰写本文时的最新版本)。流畅易读,您不需要记住所有的 PHP 日期格式。


0
date_default_timezone_set('Australia/Melbourne');   
$time = date("Y-m-d H:i:s", time()); 

3
虽然这段代码可能解决了问题,但是包括解释真的有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,这些人可能不知道您提供代码建议的原因。 - 4b0
1
请注意,此代码与Laravel框架无关,这段代码可以正常工作,但对于此问题没有帮助。正如@Shree所写,添加解释将会很有帮助。 - shushu304

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