首页 > 解决方案 > 将日期字符串从请求转换为 MySQL 兼容的日期格式

问题描述

我从 Ajax 调用中获取日期作为字符串:"Wed Jun 17 2020 09:26:45 GMT+0200 (Mitteleurop\u00e4ische Sommerzeit)"并尝试将其格式化"Y-m-d H:i:s"但失败了。我试过了

$my = $request->input('date');
$date = Carbon::parse($my);
$date = date("Y-m-d H:i:s", strtotime($my));
$date = Carbon::createFromFormat('Y-m-d H:i:s', $my);
$date = Carbon::create(my);

但没有任何效果。碳起作用并$request->input('date')存在。这里有什么问题?

标签: phpajaxdaterequestphp-carbon

解决方案


由于 PHP 不会处理每种可能语言中的所有可能时区,因此对于 1 个特定时刻的时区来说Mitteleurop\u00e4ische Sommerzeitmake Carbon::parsebutGMT+0200就足够了,因此您可以删除额外的时区:

$my = $request->input('date');
$my = preg_replace('/\s*\(.*\)$/', '', $my);
$date = Carbon::parse($my);
$date = date("Y-m-d H:i:s", strtotime($my));
$date = Carbon::createFromFormat('Y-m-d H:i:s', $my);
$date = Carbon::create(my);

您仍然应该认为这是一种解决方法。正确的方法是使用 ISO 字符串(在 GMT 时区)发送日期,Europe/Berlin如果时区很重要,则在其他字段中发送干净的时区。


推荐阅读