【问题标题】:Laravel, unable to save with date in future (end date)Laravel,无法保存未来的日期(结束日期)
【发布时间】:2018-02-09 13:51:51
【问题描述】:

我的网站有一个功能,创建一个任务,所以用户可以添加任务的ENDDate。

例如,我添加了结束日期 03.03.2018,但是当保存任务时,我在刀片视图(前端)中看到,结束日期是 -> 16.02

所以,脚本只是忽略我的结束日期并一直保存结束日期 +7 天

这是我的任务控制器

的一部分
if ($request->input('select_time') == 1) {
//            $tz = $this->getTimeZoneFromIpAddress();
//            $date = Carbon::now()->tz($tz);
            // echo date_format($date,"Y/m/d H:i:s");

            $created = new \Carbon\Carbon($taskModel->dateAndTimeTodatetime($request));
//            $created = date_format($date,"Y/m/d H:i:s");

            if ($created->isPast()) 
                return \Redirect::back()->withErrors(\Lang::get('alerts.task.time'))->withInput();
        }

这是创建任务的刀片视图(用户选择日期+小时的部分)

<div class="sel_date_block_right list_time" @if(old('select_time') != 1) style="display: none" @endif>
                        <div class="sel_date_block_dt">
                            <div class="">
                                {!! Form::text('date', $task ? $task->getTaskFinalDate('d.m.Y') : (old('date') ?: ''), array('min'=> date('Y-m-d'),'class'=>'')) !!}
                            </div>
                        </div>
                        <div class="sel_date_block_dt">
                            <div class="">
                                {!! Form::text('time', $task ? $task->getTaskFinalDate('H:i') : (old('time')?:''), array('min'=>date('H:i'),'class'=>'')) !!}
                            </div>

这是一个任务的刀片视图

<div class="row">
                            <div class="col text-r">
                                <p><strong>@lang('static.lasttime')</strong></p>
                            </div>
                            <div class="col">
                                <p>{!! $task->getTaskFinalDate('d.m.y  <span class="cl_gray">H:i</span>') !!}</p>
                            </div>
                        </div>

我花了超过 3 天的时间来弄清楚什么是问题。 :(

提前发送

【问题讨论】:

  • 你检查过数据库是否更新为"future"日期吗?
  • 你的意思是在我添加任务之后?每个任务的结束日期是 16(+7 天)
  • 你的指导方针我不清楚,当你说你的 enddate is 03.03.2018 but when task is saved end date is 16.02, so, script just ignoring my enddate and save all the time enddate +7 days 时,我似乎无法理解你的意思。 03.03 + 7 天 = 16.02 怎么算?不是应该是 10.03 吗?
  • 哦,你的意思是要保存的日期是 03.03,但它保存的是 16.02,所以它减去 7 天,而不是添加?
  • Yes ;) 一直在忽略我设置的结束日期(例如 03.3),并且每次都设置 + 7 天

标签: php laravel


【解决方案1】:

我认为问题出在这段代码$created = new \Carbon\Carbon($taskModel-&gt;dateAndTimeTodatetime($request)); 中,因为我们不知道$taskModel 是什么,也不知道dateAndTimetodatetime 方法的作用。你可能搞错了日期。

根据我的假设,可能的解决方案是使用 createFromFormat 函数在 Carbon 中获取正确的日期,该函数从字符串中实例化 Carbon 实例。

$carbonDate = Carbon::createFromFormat('Y-m-d H:i', $request->get('date').' '.$request->get('time'));

现在您可以调用他们的official docs 中记录的其他方法

【讨论】:

  • 我在模型中有 -> Task.php public function dateAndTimeTodatetime(Request $request) { $final_date = date("Y-m-d H:i:s"); $date = $request->input('date'); $time = $request->input('time'); if ($date && $time) { $final_date = Carbon::createFromFormat('d.m.Y H:i', $date . ' ' . $time)->toDateTimeString(); } 返回 $final_date;它应该工作:(
  • 尝试从我上面的示例中转储该日期和日期,并将结果粘贴到此处
  • DD evertthing 正常后,不知道为什么在 DB 中以错误的方式保存
  • 我从上面的代码中看不到你在哪里保存模型,你能发布那部分吗?
猜你喜欢
  • 2018-12-25
  • 2021-08-24
  • 2021-05-29
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2020-11-16
  • 2020-06-08
  • 2020-10-05
相关资源
最近更新 更多