用PHP实现猜测日期格式

用PHP实现猜测日期格式,php,html,date,Php,Html,Date,我在HTML5type=“date”字段中有一个用户以web形式输入。然后,这个输入的值(连同其他值)被保存为MySQL数据库中的JSON文档。现在,我需要提取该日期,并将其打印到生成的MS Word文档中,使用一种给定的格式。伟大的但正如您所知,HTML5日期字段根据用户区域设置、设置等接受日期格式。我注意到,在不同浏览器中输入的所有日期都以“Y-m-d”格式保存在DB中。在所有情况下都是这样吗?我可以依靠这种格式将来使用吗?找不到有关此主题的任何规范信息。 如果你不能依赖于“Y-m-d”格式

我在HTML5
type=“date”
字段中有一个用户以web形式输入。然后,这个输入的值(连同其他值)被保存为MySQL数据库中的JSON文档。现在,我需要提取该日期,并将其打印到生成的MS Word文档中,使用一种给定的格式。伟大的但正如您所知,HTML5日期字段根据用户区域设置、设置等接受日期格式。我注意到,在不同浏览器中输入的所有日期都以“Y-m-d”格式保存在DB中。在所有情况下都是这样吗?我可以依靠这种格式将来使用吗?找不到有关此主题的任何规范信息。
如果你不能依赖于“Y-m-d”格式,那么有没有用于“猜测”日期格式的PHP库?

首先,为什么你要将JSON文档保存在MySQL数据库中,而不是保存一些更合适的文档数据库(例如MongoDB)

无论如何,基于和显示的日期格式与实际值不同。HTTP请求中的日期值将始终格式化为
yyyy-mm-dd
,这就是格式,我想它应该是可靠的

在PHP中,可以使用类处理日期字符串。此类支持多种不同的日期格式。例如:

// timezone is set based on your system preferences if not set
$date1 = new DateTime('2017-04-27', new DateTimeZone('+00:00'));
$date2 = new DateTime('27 April 2017', new DateTimeZone('+00:00'));
$date3 = new DateTime('2017-04-27T00:00:00+00:00');

var_dump($date1 == $date2); // bool(true)
var_dump($date1 == $date3); // bool(true)
如果日期字符串错误,将引发异常:

try {
    $date = new DateTime('2017 4 27');
} catch (Exception $e) {
    echo $e->getMessage(); // DateTime::__construct(): Failed to parse time string (2017 4 27) at position 5 (4): Unexpected character
}
因此,在您的情况下,您可以将此类用于日期验证,而不是正确的输出格式,例如:

$dateString = '2017-04-27T14:22:11+00:00';
try {
    $date = new DateTime($dateString);
    echo $date->format('Y-m-d'); // 2017-04-27
} catch (Exception $e) {
    // do something else
}

感谢Lukas向MDN和Google开发者表示感谢。看来我搜索得太少了,自己找不到答案。最重要的是请求总是以yyyy-mm-dd的形式发送。我的整个应用程序都依赖于MySQL。但我需要构建动态表单来输入硬拷贝文档属性。MySQL 5.7.6中新增的JSON类型字段在扩展应用程序功能方面确实帮了我大忙。当有人问问题时,他希望得到问题的实际答案。人们不需要对他们的发展选择进行评判。如果你对别人的选择有问题,那么问题只在于你自己。请注意,这个论坛是一个解决问题的地方,而不是让每个人都有相同的想法和做法。任何人都可以选择一个数据库而不是另一个数据库的原因有很多。