【问题标题】:Laravel form :: date function formatLaravel 表单 :: 日期函数格式
【发布时间】:2018-12-18 22:37:51
【问题描述】:

我需要你的帮助。 我找不到解决这个问题的方法。 我认为它应该非常简单,但它让我忙了好几个小时。

{{Form::date('age', $data[0]->age)}}  

当我使用 form::date 函数时,我让用户选择生日。 选择信息后以以下格式(“Y-m-d”)保存到数据库中,这非常有效。

如果用户想编辑出生日期,它显示为(“d-m-Y”),我如何显示为(“Y-m-d”)?我已经在网上搜索了几个小时,用 carbon、date_format 和其他方法尝试过,但似乎没有任何效果。

我在这里做错了什么? 我正在使用 laravel 5.2

感谢您的帮助。

更新

从 Mysql 面板获取信息的查询:

$userId = auth()->user()->id; 
$data = Setting::where('user_id', '=', $userId)->first(); 
return view('pages_user.mysettings')->with('data', $data); 

型号:

protected $dates = ['age'];
protected $table = 'date_userinfo';

输入框

{{ Form::date('age', $data->age->format('Y-m-d')) }} 

【问题讨论】:

  • $data[0]->age 的输出是什么?
  • 输出中的出生日期为 ("Y-m-d"),例如 1988-12-31

标签: php laravel forms date


【解决方案1】:

试试这个:

{{ Form::date('age', date('Y-m-d', strtotime($data[0]->age))) }}  

它将日期转换为Y-m-d格式。

我强烈建议您查看Carbon。它内置在 Laravel 中,可以很好地处理日期。

更新: 在您的模型集中:

protected $dates = ['age'];

那么,在你看来:

{{ Form::date('age', $data[0]->age->format('Y-m-d')) }}

另外,我不建议使用$data[0] 来获取数据。如果是多行,请使用foreach,否则您可以在查询中使用->first() 拉取一条记录(而不是多条记录)。

编辑: 解决方法,但只要日期格式为d-m-Y,它就会强制其工作

{{ Form::date('age', \Carbon\Carbon::createFromFormat('d-m-Y', $data->age)->format('Y-m-d') }}

【讨论】:

  • 我试过这个,没有改变输出。它仍然显示为 ("d-m-Y")
  • 你的$data来自哪里?你是从模特身上拉出来的吗?
  • 我从控制器中直接从 MySQL 数据库中提取它,该行称为年龄,数据类型为日期。如果我只回显 $data[0]->age,它会将正确的日期显示为 ("Y-m-d")。
  • 好的。你有配置模型吗?比如说,我有一个名为 users 的表,我应该有一个 User 模型设置,我会通过 $users = Users::get() 提取数据。一旦你有了这个,你就可以告诉你的模型哪一列包含日期,它会自动为你格式化。
  • 我找到了问题的解决方案。 Laravel 不是问题,谷歌浏览器才是!当我使用英语时,它会自动转换它,例如,当我更改为日语时,它会以正确的方式显示。谷歌浏览器;改变它。
【解决方案2】:

问题是谷歌浏览器,而不是 laravel。 Google chrome 将日期更改为当地标准。

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2013-10-16
    • 2016-02-04
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多