我在mysql数据库中有一个timestamp变量列.试图将碳时间戳转换为我可以在那里输入的内容,但Carbon::now()只返回一个Carbon对象,当我尝试使用Carbon对象的时间戳字符串时,它不会在mysql中注册.
public function store(CreateArticleRequest $request){
$input = $request->all();
var_dump($input); // JUST SO YOU CAN SEE
$input['published_at'] = Carbon::now();
var_dump($input); // JUST SO YOU CAN SEE
Article::create($input);
}
Run Code Online (Sandbox Code Playgroud)
我的第一个var转储是这样的:
array (size=4)
'_token' => string 'Wy67a4hWxrnfiGz61wmXfYCSjAdldv26wOJiLWNc' (length=40)
'title' => string 'ASDFasdf' (length=8)
'body' => string 'asdfasdf' (length=8)
'published_at' => string '2015-08-26' (length=10)
Run Code Online (Sandbox Code Playgroud)
我的第二个var转储是这样的.
与"published_at"相关的mysql列是时间戳变量.我想如何从碳对象转换它?
提前致谢.
我已经开始将PHP Carbon用于我的应用程序,因为它似乎比使用和操作DateTime类的日期/时间容易得多.我想要做的是检查所选日期($ chosen_date)是否大于另一个日期($ whitelist_date).我在下面的代码中试过这个:
$chosen_date = new Carbon($chosen_date);
$whitelist_date = Carbon::now('Europe/London');
$whitelist_date->addMinutes(10);
echo "Chosen date must be after this date: ".$whitelist_date ."</br>";
echo "Chosen Date: ".$chosen_date ."</br>";
if ($chosen_date->gt($whitelist_date)) {
echo "proceed";
} else {
echo "dont proceed";
}
Run Code Online (Sandbox Code Playgroud)
原始的$ chosen_date值来自POST数据.这是我得到的输出:
Chosen date must be after this date: 2015-09-22 21:21:57
Chosen Date: 2015-09-22 21:01:00
proceed
Run Code Online (Sandbox Code Playgroud)
显然,所选日期不大于白名单日期,但仍然if语句返回true并且echo为"proceed".我一遍又一遍地对代码进行了检查,但我看不出哪里出错了.
我正在尝试获取一个Eloquent查询结果,DB::raw("DATE_FORMAT(created_at, '%m-%d-%Y %r') AS created_at")但每次我从Carbon获得此异常时:
InvalidArgumentException
Unexpected data found. Trailing data
Run Code Online (Sandbox Code Playgroud)
如果我改为将其created_at改为使用MySQL的DATE_FORMAT()功能,那么它就可以毫无问题地获取数据.
我之前不仅没有问题就完成了这种日期格式化,但我检查了数据库表中的每个字段(这个种子只有10个),每个都是标准的有效日期,所以我想知道为什么Carbon正在投球合身.
在Laravel 4.1中运行它.
我想在时间组件中将时间戳存储在数据库中00:00:00.
以下代码:
$start_date = Carbon::createFromFormat('d-m-Y', $date_interval["start_date"]);
$end_date = Carbon::createFromFormat('d-m-Y', $date_interval["end_date"]);
Run Code Online (Sandbox Code Playgroud)
将当前时间添加到日期,当我仅提供没有时间规范的日期时.
我需要这个,因为我需要从数据库中检索内部整数,这应该是一天的开始.
存储这个"一天开始"的最佳方法是什么?
以下代码抛出了一个异常,无论出于何种原因我都无法捕获.
try {
$this->date = \Carbon\Carbon::parse($this->date)->toDateString();
}
catch (Exception $err) {
$this->date = \Carbon\Carbon::parse("January 1st 1900")->toDateString();
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我将它放在函数闭包中的我的路径文件中,它可以正常工作.它只是在从模型中调用时抛出异常.
exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Summer 2015) at position 0 (S): The timezone could not be found in the database' in /home/vagrant/www/steamcompare/vendor/nesbot/carbon/src/Carbon/Carbon.php:222
有没有其他人有碳这个问题?
我正在尝试为Laravel 4中的预订系统创建一系列的中断日期.我的数据库中有一个测试行,其start_date为2016-01-24,end_date为2016-01-29.
这是使用Carbon来增加行并循环使用Carbon增加一天并将其添加到数组的代码:
$reserved = Reservation::where('property_id', $property->id)->get();
$blackoutDays = [];
foreach($reserved as $r)
{
$start = new \Carbon\Carbon($r->start_date);
$end = new \Carbon\Carbon($r->end_date);
$days = $start->diff($end)->days;
for($i = 0; $i <= $days; $i++)
{
$date = '';
$date = $start->addDays($i);
$blackoutDays[] = $date->format('Y-m-j');
}
}
Run Code Online (Sandbox Code Playgroud)
我想在$ blackoutDays中获得的是:
["2016-01-24","2016-01-25","2016-01-26","2016-01-27","2016-01-28","2016-01-29"]
但我实际得到的是:
["2016-01-24","2016-01-25","2016-01-27","2016-01-30","2016-02-3","2016-02-8"]
有谁知道为什么会发生这种情况/如何解决?有没有更好的方法呢?
我有PHP的时间戳,所以我使用Carbon扩展来管理与日期,时间等相关的所有内容.现在我有一个小时23:00或20:00这个扩展如何将其转换为AM和PM格式?
我开始阅读Carbon,似乎无法弄清楚如何创建一个carbon date.
在文档中说你可以;
Carbon::createFromDate($year, $month, $day, $tz); Carbon::createFromTime($hour, $minute, $second, $tz); Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);
但是,如果我只是接受一个date喜欢2016-01-23怎么办?carbon在创建carbon日期之前,我是否需要去除每个部分并将其送入?或者我收到time喜欢的11:53:20?
我正在处理动态日期和时间,并且编写代码以分开时间或日期的部分感觉不对.
任何帮助赞赏.
好吧所以我一直在寻找答案的时间,但似乎找不到答案.我有一系列"订单",所有日期都不同.我得到了本周的所有订单,这应该不是问题,然后我想要一周的每一天的标签.
到目前为止我尝试过的是:
$dinnerOrders->where('date','>',$date)->where('date','<', $date->endOfDay())->sortBy('created_at');
Run Code Online (Sandbox Code Playgroud)
$ date是:
$dt = Carbon\Carbon::create()->startOfWeek();
Carbon\Carbon::setTestNow($dt);
$date = new Carbon\Carbon('this ' . $day);
Run Code Online (Sandbox Code Playgroud)
并且$ dinnerOrders得到:
$dinnerOrders = collect([]);
foreach($restaurant->dinners as $dinner) {
foreach($dinner->orders as $order) {
$dinnerOrders[$order->id] = $order;
}
}
Run Code Online (Sandbox Code Playgroud)
日期似乎正确,它在sql中的单词.这是不行的,因为$ dinnerOrders是一个集合?
我得到的是什么都没有,即一个空集,尽管它在mysql终端中工作.
所以我要问的是,你可以对一个集合进行日期比较吗?如果是这样,怎么样?
我正在与Laravel 4合作,在Facebook上发布/安排餐厅菜单.为此,我需要一个当前周的日期选择器,始终在星期一开始,并始终在星期日结束.
我已经玩过http://carbon.nesbot.com/docs/#api-getters的例子但没有成功.
任何的想法?