标签: php-carbon

尝试更改Carbon created_at日期的格式时,Laravel"发现意外的数据"错误

当我尝试修改我的资源模型的默认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.

laravel-4 php-carbon

10
推荐指数
3
解决办法
4万
查看次数

Laravel Carbon,在工作日检索今天的日期?

我使用碳来比较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)

datetime laravel php-carbon laravel-5

10
推荐指数
2
解决办法
2万
查看次数

如何处理包含Laravel上的碳日期的模型的JSON响应?

我正在编写一个非常简单的应用程序,要求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)

javascript json backbone.js laravel-4 php-carbon

9
推荐指数
2
解决办法
8795
查看次数

获取创建日期超过14天的行

情况就是这样:

在我的数据库中,我有一个表部署.表中的行也有一个字段created_at.现在我想选择created_date 超过14天的所有行.但我坚持如何用Carbon做到这一点.我的查询现在看起来像这样:

$passed = Deployment::where('created_at', '>=', );
Run Code Online (Sandbox Code Playgroud)

谁能帮我这个?

php datetime laravel php-carbon laravel-5.1

9
推荐指数
1
解决办法
8068
查看次数

使用Carbon在laravel中将日期转换为毫秒

我用碳在laravel中约会

$date = Carbon::createFromDate(2018,02,16);
Run Code Online (Sandbox Code Playgroud)

我应该如何将其更改为毫秒?

像这样:

18:16:30 -> 1532785457060
Run Code Online (Sandbox Code Playgroud)

php laravel php-carbon

9
推荐指数
4
解决办法
2万
查看次数

Laravel Carbon 上周末开始+结束了吗?

我有 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)

laravel php-carbon

9
推荐指数
1
解决办法
4774
查看次数

无法在视图中显示created_at值

我试图在我的一个视图中显示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访问日期?

laravel laravel-4 php-carbon

8
推荐指数
1
解决办法
1万
查看次数

处理php(Laravel API)和javascript(AngularJS)之间的日期时间

我正在尝试使用我的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)

datetime laravel laravel-4 php-carbon laravel-5

8
推荐指数
1
解决办法
2633
查看次数

Laravel Carbon查看日期是否已过去

我很困惑,也许这是我看不到的简单事情.如果我想看看今天的日期是否过去,我应该能够做到这样的事情吗?

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()?????

php laravel php-carbon

8
推荐指数
3
解决办法
1万
查看次数

php - 使用DateTime获取日期时间会从date()函数返回不同的值

我试图使用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 datetime unix-timestamp php-carbon

8
推荐指数
1
解决办法
353
查看次数