当我尝试修改我的资源模型的默认created_at字段的格式时,我收到以下错误:
{
"error":{
"type":"InvalidArgumentException",
"message":"Unexpected data found.
Unexpected data found.
The separation symbol could not be found
Unexpected data found.
A two digit second could not be found",
"file":"\/var\/www\/html\...vendor\/nesbot\/carbon\/src\/Carbon\/Carbon.php",
"line":359
}
}
Run Code Online (Sandbox Code Playgroud)
以下是产生上述错误的代码:
$tile = Resource::with('comments, ratings')->where('resources.id', '=', 1)->first();
$created_at = $tile->created_at;
$tile->created_at = $created_at->copy()->tz(Auth::user()->timezone)->format('F j, Y @ g:i A');
Run Code Online (Sandbox Code Playgroud)
如果我->format('F j, Y @ g:i A')从上面的代码中删除它,它工作正常,但它不是我想要的格式.问题是什么?我的应用程序中的其他地方几乎完全相同的代码,它可以正常工作.
更新:
使用setToStringFormat('F j, Y @ g:i A')不会导致错误,但会返回null.
我使用碳来比较2个日期和今天的日期,但是我在一个名为weekday的数据库中还有另一个字段,其中包含以下值:
'MO''TU''我们'
所以我不仅希望按日期搜索和输出,还要按工作日搜索:
public function show($id)
{
$today = Carbon::now();
$weekday = //whatever carbon or something else has to retrieve today's day
$event = Event::with('businesses')
->where('startdate', '<', $today->format('Y-m-d'))
->where('endate', '>', $today->format('Y-m-d'))
//or where ('weekday') = $weekday?
->get();
return view('events.showEvent', compact('event'));
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个非常简单的应用程序,要求Backbone.js模型和Laravel 4模型同步.当Laravel模型涉及碳日期时,就会出现问题.我的Laravel控制器看起来像这样:
class OrderController extends \BaseController {
...
public function update($id = null) {
...
if (Request::ajax())
return $order;
...
}
}
Run Code Online (Sandbox Code Playgroud)
这成功响应了$ order的JSON表示,客户端用它来保持同步.但是,Carbon日期作为Carbon对象表示返回,如下所示:
{
"delivered_at":{"date":"2014-02-25 12:55:29","timezone_type":3,"timezone":"America\/Argentina\/Buenos_Aires"}
}
Run Code Online (Sandbox Code Playgroud)
我可以设法将此解释为javascript Date对象,但是,当此对象返回到laravel时,JSON将删除Carbon该类,而Eloquent 无法将其作为日期读取:
[2014-02-25 12:58:32] log.ERROR: exception 'ErrorException' with message 'preg_match() expects parameter 2 to be string, array given' in vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2210
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleError(2, 'preg_match() ex...', '/Users/maurospi...', 2210, Array)
#1 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2210): preg_match('/^(\d{4})-(\d{2...', Array)
#2 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2151): Illuminate\Database\Eloquent\Model->fromDateTime(Array)
#3 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(306): Illuminate\Database\Eloquent\Model->setAttribute('delivered_at', Array)
#4 app/controllers/OrderController.php(120): Illuminate\Database\Eloquent\Model->fill(Array)
#5 [internal …Run Code Online (Sandbox Code Playgroud) 情况就是这样:
在我的数据库中,我有一个表部署.表中的行也有一个字段created_at.现在我想选择created_date 超过14天的所有行.但我坚持如何用Carbon做到这一点.我的查询现在看起来像这样:
$passed = Deployment::where('created_at', '>=', );
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?
我用碳在laravel中约会
$date = Carbon::createFromDate(2018,02,16);
Run Code Online (Sandbox Code Playgroud)
我应该如何将其更改为毫秒?
像这样:
18:16:30 -> 1532785457060
Run Code Online (Sandbox Code Playgroud) 我有 Laravel Carbon 用于本周的开始+结束:
$startofcurrentweek =Carbon::now()->startOfWeek(); //2020-02-17 00:00:00
$endofcurrentweek =Carbon::now()->endOfWeek(); //2020-02-23 23:59:59
Run Code Online (Sandbox Code Playgroud)
如何使用碳开始上周,...所以我可以得到,
$startoflasttweek = 2020-02-10 00:00:00
$endoflastweek = 2020-02-16 23:59:59
Run Code Online (Sandbox Code Playgroud) 我试图在我的一个视图中显示created_at列,但我没有运气.当我尝试使用以下内容时:
{{ date('d M Y - H:i:s', $object->created_at) }}
我得到以下错误:date()期望参数2为long,给定对象.所以我在$ object-> created_at上使用了dd(),它给了我这个:
object(Carbon\Carbon)#555 (3) { ["date"]=> string(26) "2015-01-22 14:36:37.000000" ["timezone_type"]=> int(3) ["timezone"]=> string(19) "Africa/Johannesburg" }
所以很自然地我尝试使用foreach循环访问日期,但是我还尝试了$ object-> created_at-> date,这给了我一个错误"Unknown getter'date'"如何从created_at访问日期?
我正在尝试使用我的Angularjs前端进行Laravel API交换日期.
它通过首先转换我的mysql datetime初始值从Laravel到JS工作:
2015-08-19 10:00:00
Run Code Online (Sandbox Code Playgroud)
使用$newdate = Carbon::parse($event['date'])->toATOMString();哪些输出:
2015-08-19T10:00:00+00:00
Run Code Online (Sandbox Code Playgroud)
,然后将其转换为javascript日期对象(Angularjs),使用event.date = new Date(event.date);哪些输出:
Date 2015-08-19T10:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
问题:将更新的Javascript日期对象发布回我的PHP API以更新mysql db(datetime)中的值.Carbon不喜欢他回来的日期格式:
2015-08-19T11:00:00.000Z
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理这个问题.我从Laravel日志中收到以下错误:exception 'InvalidArgumentException' with message 'Trailing data' … Carbon/Carbon.php:392
问题:如何在php中转换上述格式化日期,以便Carbon接受它?
我不需要记录秒数,因此我的Laravel模型处理日期如下:
$this->attributes['date'] = Carbon::createFromFormat('Y-m-d H:i', $date);
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我尝试过的(没有成功).我显然错过了一些东西而不确定我在做什么.
/**
* Store updates to event.
*
* @return Response
*/
public function update($id)
{
$event = Event::findOrFail($id);
$date = Request::get('jsdateobject');
// ------------------------------------------------------------
// trying to handle following format: 2015-08-19T11:00:00.000Z
// ------------------------------------------------------------
// $date = …Run Code Online (Sandbox Code Playgroud) 我很困惑,也许这是我看不到的简单事情.如果我想看看今天的日期是否过去,我应该能够做到这样的事情吗?
if( $league->date_start <= Carbon::now() ){
$join = false;
$message = 'Sorry, the league has already started';
}
Run Code Online (Sandbox Code Playgroud)
如果我把它的日期转出来
$league->date_start = 2017-07-31 00:00:00
Carbon::now() = 2017-11-01 16:29:27
Run Code Online (Sandbox Code Playgroud)
$league->date_start 是一个受保护的日期,所以它是一个碳实例
但这不起作用,如果我切换到$league->date_start >= Carbon::now()它工作,不会让我加入.我知道"联盟"的开始日期是过去所以不应该是$league->date_start <= Carbon::now()?????
我试图使用Carbon或DateTime类获取当前时间戳我得到错误的日期但是当我使用date()函数时它返回正确的日期我在win server 2012上运行代码这是我的代码
dd([
'Carbon::now()->format("Y-m-d H:i:s P")' => Illuminate\Support\Carbon::now()->format('Y-m-d H:i:s P'),
'DateTime()->format("Y-m-d H:i:s P")' => (new DateTime())->format('Y-m-d H:i:s P'),
'date("Y-m-d H:i:s P")' => date('Y-m-d H:i:s P'),
'date("Y-m-d H:i:s P",microtime(true))' => date("Y-m-d H:i:s P", microtime(true)),
'date("Y-m-d H:i:s P", time())' => date("Y-m-d H:i:s P", time()),
'Carbon::now()->getTimestamp()' => Illuminate\Support\Carbon::now()->getTimestamp(),
'microtime()' => microtime(true),
'time()' => time(),
]);
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出
[
"Carbon::now()->format("Y-m-d H:i:s P")" => "2018-06-25 22:41:59 +03:00"
"DateTime()->format("Y-m-d H:i:s P")" => "2018-06-25 22:41:59 +03:00"
"date("Y-m-d H:i:s P")" => "2018-06-19 11:59:22 +03:00"
"date("Y-m-d H:i:s P",microtime(true))" => …Run Code Online (Sandbox Code Playgroud) php-carbon ×10
laravel ×7
datetime ×4
laravel-4 ×4
php ×4
laravel-5 ×2
backbone.js ×1
javascript ×1
json ×1
laravel-5.1 ×1