【问题标题】:Trying to render the date试图呈现日期
【发布时间】:2018-11-20 20:42:15
【问题描述】:

我有这个代码,

<div class="form-group">
  <label class="col-sm-2 control-label" for="date-created">Date Created</label>
  <div class="col-sm-10">
    @if (isset($post->created_at))
      <input type="date" class="form-control" id="date-created" name="created_at" value="{{ date('d/m/Y', strtotime($post->created_at)) }}">
    @else
      <input type="date" class="form-control" id="date-created" name="created_at" placeholder="Enter the date the blog post created">
    @endif
  </div>
</div>

我要做的是,将数据库中的日期显示到允许用户编辑日期的类型的输入框。

但在浏览器上渲染时会显示

最好的办法是什么?

这可能是一个简单的问题,但我找不到一个简单的解释来解释为什么它对我不起作用。

【问题讨论】:

  • 尝试将格式从:date('d/m/Y',... 更改为 date('d-m-Y',stackoverflow.com/questions/40038521/…
  • 还是不行....
  • 您是否首先尝试使用默认的&lt;input type="text"&gt; 来确认这是否只是type="date" 字段格式的问题,或者您的模板是否确实有问题?

标签: php html laravel-5


【解决方案1】:

您唯一做错的是日期格式,根据Mozilla Developers Guide for the &lt;input type="date"&gt; field,它是YYYY-MM-DD。所以你只需要将你的日期格式字符串切换为Y-m-d

或者,您也可以使用 AntonyMN 提到的Carbon 方法并使用函数toDateString()。如果您将created_at 字段设置为模型中protected $dates = ['created_at'];$date 字段的一部分,您甚至不需要将日期字符串解析为Carbon 对象。该模型将根据需要简单地返回一个 Carbon 对象。

顺便说一句,由于输入的固定格式,我认为在日期输入字段上使用占位符不起作用。

【讨论】:

    【解决方案2】:

    Laravel 自带 Carbon nesbot 开箱即用,以帮助格式化日期。 laravel 中的日期可以很容易地像这样格式化:

    {{\Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}
    
    {{\Carbon\Carbon::parse($post->created_at)->format('jS M Y') }}
    

    只是显示一些选项。您可以获取有关日期格式的完整文档here

    在你的情况下,代码应该是

    @if (isset($post->created_at))
      <input type="date" class="form-control" id="date-created" name="created_at" value="{{ \Carbon\Carbon::parse($post->created_at)->format('d/m/Y') }}">
    @else
      <input type="date" class="form-control" id="date-created" name="created_at" placeholder="Enter the date the blog post created">
    @endif
    

    【讨论】:

    • 对不起...我忘记了一些东西...我现在正在编辑。我添加了::parse 告诉 carbon 解析日期
    • 嗯,我真的不知道为什么它不起作用,我尝试了值的组合,在 laravel 之外,但得到了相同的结果
    • 根据您的情况编辑
    • @AntonyMN 请注意,created_atupdated_at,如果连接到 Laravel 中的模型,默认情况下是 Carbon 变量,所以你不需要调用实例化它们再次(通过::parse())。你应该可以打电话给$post-&gt;created_at-&gt;format()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2018-04-20
    相关资源
    最近更新 更多