【问题标题】:Laravel use special date formatLaravel 使用特殊的日期格式
【发布时间】:2017-10-19 09:16:59
【问题描述】:

现在我使用strtotime 函数将德国日期格式(01.01.2017)转换为库存(2017-01-01)。例如我使用date('Y-m-d', strtotime($birthday))。现在我想使用简短的德国日期格式并将其转换为库存。例如。 1.1.17 应转换为 2017-01-01。我怎样才能做到这一点?使用strtotime 函数不起作用(或者我很愚蠢地使用它)

还有一个问题:如果有人输入 32.01.2017,我该如何捕捉错误?我只收到调试通知,或者在生产中收到“哎呀,...”“错误”消息。改为发出一些甜蜜的警报信息会很棒。我收到以下错误消息:

DateTime::__construct():在位置 0 (3) 解析时间字符串 (32.10.2016) 失败:意外字符

【问题讨论】:

  • 你在你的模型中使用protected $dates = [$birthday];吗?
  • 我该如何管理它,当有人输入 '32.01.2017' 并在我的控制器中捕获这种情况时,我没有收到服务器错误?
  • 不,我使用protected $guarded = [];
  • 你为什么不尝试使用受保护的 $dates?
  • 因为问题出在碳而不是我的模型上?其他格式确实有效,..

标签: php laravel strtotime php-carbon


【解决方案1】:

你可以用这个。

$date = '1.1.17';
$year = substr($date, -2);
$finalDate= substr($date, 0, -2)."20".$year;
Carbon::createFromFormat('m.d.Y',$finalDate)->format('Y-m-d');

(更新)。

【讨论】:

  • 但我想做这件事:Carbon::parse('1.1.17'); 这不起作用;)
  • 我尝试使用此代码“Carbon::parse('1.1.17')->format('Y-m-d');”它对我有用,兄弟。
  • 不,伙计,对我不起作用。 1.1.2017 有效,但 1.1.17 无效。我是否使用格式都没关系。
  • 它对我有用。我不知道为什么它对你不起作用。我认为您遇到了其他问题。
  • 嗯.. 你做了什么让它发挥作用?如果我这样做 $birthday = Carbon::parse('1.1.17')->format(Y-m-d); dd($birthday); 我总是得到今天的日期
【解决方案2】:

为了管理 Laravel 日期,你可以使用一个名为 Carbon 的漂亮包来解决你的问题 Carbon::parse("data");

在这里你可以完善文档。

http://carbon.nesbot.com/docs/ 这里是 Laravel 的 api 文档:

https://laravel.com/api/5.5/Illuminate/Support/Carbon.html

【讨论】:

  • 谢谢,carbon 有帮助,但并不完美。我用过:$birthday = Carbon::parse($birthday);,现在我可以转换 1.1.2017 但仍然不能转换 1.1.17.. 有什么解决方案吗?
【解决方案3】:

正如 LorenzoBerti 提到的,您可以使用碳来解析您的日期:

$birthday = Carbon::parse($birthday)->format('d.m.y');

注意format() 方法,它应该为您提供所需的格式。

【讨论】:

  • 输出格式不是问题。问题是,Carbon::parse(1.1.17) 不会返回 2017-01-01 而是返回当天。 Carbon::parse(1.1.2017) 工作。
猜你喜欢
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
相关资源
最近更新 更多