我一直在从事 Laravel 项目。当我运行 composer 命令时,我总是收到警告,
Carbon 1 已弃用,请参阅如何迁移到 Carbon 2。 https://carbon.nesbot.com/docs/#api-carbon-2 您可以运行“./vendor/bin/upgrade-carbon”以获取更新帮助carbon 和其他依赖它的框架和库。
然后我运行./vendor/bin/upgrade-carbon但出现错误,
未捕获的错误:在 .../vendor/nesbot/carbon/src/Carbon/Upgrade.php:131 中找不到类“Composer\Composer”
我也尝试寻找解决方案,但找不到。我真的需要帮助来继续我的项目。非常感谢。
我有created_at田地。在我的数据库中,例如,我需要获取月份名称;
...
{{\Carbon\Carbon::now()->monthName}}
...
Run Code Online (Sandbox Code Playgroud)
那么我该怎么做呢$value->created_at?
我尝试了一些解决方案,但没有得到月份名称。
我想这是我得到了来自时间转换$scheduleTime = Carbon::createFromTimestampUTC($scheduleTimestamp)->toTimeString();这是目前给我的07:32:40,现在我想将其转换成秒只使用碳库是这可能这样做,如果是的话怎么办?
我想将以秒为单位的时间间隔转换为几天小时数分钟。我已经试过了。
$value = '90060';
CarbonInterval::seconds($value)->forHumans();
Run Code Online (Sandbox Code Playgroud)
我得到了输出
90060 seconds
Run Code Online (Sandbox Code Playgroud)
我的预期输出是
1 day 1 hour 1 minute
Run Code Online (Sandbox Code Playgroud)
如何使用Carbon或获取输出CarbonInterval
我想更改weekendDays为仅在我的 Carbon 实例中包含星期日。我怎样才能做到这一点?
我认为我有一个相对简单的问题,只是误解了我的一个方面。
我有一个索引页,在其中一个表单元格中有一个if语句:
@if (Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) > 0 && Carbon\Carbon::parse($shipment->due_date)->diffInDays(false) < 10)
Run Code Online (Sandbox Code Playgroud)
错误之处在于我想声明的是,如果是在未来的一天,比如说明天与今天相比,我将返回-1,而如果我提到昨天,则将返回1。
问题是我正在尝试使用这些文档,但是无论我尝试哪种方式,它们都在为我排队:http : //carbon.nesbot.com/docs/#api-humandiff
但是我应该提到在相同的布局上我可以做到这一点:
{{Carbon\Carbon::parse($shipment->due_date)->diffInDays()}}
Run Code Online (Sandbox Code Playgroud)
并返回过去或将来的天数(即使两者都是正数),所以我知道上述工作原理(以某种方式,但是我仍然需要提及正数或负数)。
我正在尝试以不同的语言在视图中本地化Carbon日期,但到目前为止还没有成功。
我从模型中检索日期并将它们发送到视图:
Route::get('/tables/setup', function(){
$now= Date::now('Europe/Paris');
$active_tasks = GanttTask::whereDate('start_date', '<', $now)
->whereDate('end_date', '>', $now)
->get();
return view('my_view', compact('active_tasks'));
});
Run Code Online (Sandbox Code Playgroud)
并且可以轻松地在“my_view”中显示它们:
@foreach($active_tasks as $active_task)
{{$active_task->start_date->format('l j F Y H:i:s')}} //Friday 26 January 2018 09:19:54
@endforeach
Run Code Online (Sandbox Code Playgroud)
但我无法以所需的语言呈现它们。
我尝试Carbon::setLocale('it');在路线或视图中添加没有效果。
编辑:
我的刀片调用中有轻微错误,{{$active_task->start_date->format('l j F Y H:i:s')}}而不是{{$active_task->format('l j F Y H:i:s')}}
我收到一个集合,其中包含
[80] => Array
(
[date] => Carbon\Carbon Object
(
[date] => 2018-04-04 17:27:24.000000
[timezone_type] => 3
[timezone] => UTC
)
Run Code Online (Sandbox Code Playgroud)
我想从这里获取日期,当我执行 foreach 时,它会给出一个 Carbon\Carbon Object('date' 像这样,但随后无法访问日期。
有谁知道有什么解决办法吗?
我存储了用户时区(数据库表中有timezone列users),如果经过身份验证,我想显示用户时区中所有模型的所有 $dates属性。
我试图找到一种优雅的方式来做到这一点......理想情况下,当 Blade 视图中有这样的东西时:
{{ $post->created_at }}
OR
{{ $post->created_at->format('h:i:s A') }}
Run Code Online (Sandbox Code Playgroud)
...对于经过身份验证的用户,它将自动在他们的时区中。
你会如何处理这件事?
我正在考虑创建一个特质(例如app/Traits/UserTimezoneAware.php)和地点有访问器,将简单地返回Carbon::createFromFormat('Y-m-d H:i:s', $value)->timezone(auth()->user()->timezone)如果当前用户进行身份验证。例如:
<?php
namespace App\Traits;
use Carbon\Carbon;
trait UserTimezoneAware
{
/**
* Get the created_at in the user's timezone.
*
* @param $value
* @return mixed
*/
public function getCreatedAtAttribute($value)
{
if (auth()->check()) {
return Carbon::createFromFormat('Y-m-d H:i:s', $value)->timezone(auth()->user()->timezone);
}
return Carbon::createFromFormat('Y-m-d H:i:s', $value);
}
/**
* Get …Run Code Online (Sandbox Code Playgroud) 我在数据库上有一些时间戳记录,它们的时间戳有尾随毫秒,而有些则没有。如何允许碳中的尾随数据(毫秒)?这可能吗?
这是我的数据示例
我不能总是手动更改数据,因为还有一些其他服务使用相同的数据库,有时会存储带有尾随毫秒的时间戳。