PHP日期格式与Symfony RFC 3339格式

时间:2017-11-14 10:42:05

标签: php symfony date datepicker rfc3339

根据http://php.net/manual/en/class.datetime.php

PHP跟随" ATOM"日期格式。制作像" 2017-11-14"我们需要日期格式字符串" Y-m-d"。我能够使用php日期函数和类生成它。它按预期工作。

['amazed', 10]

现在我想在Symfony3应用程序中动态使用这些日期格式。根据文档,dateType字段的格式必须符合" RFC3339"因为它使用IntlDateFormatter类进行格式化。 https://symfony.com/doc/current/reference/forms/types/date.html#format

因此要生成与前一个相同的日期,我们需要不同的格式字符串

/////Using date function////
echo date("Y-m-d");

/////Using DateTime class////
$date = new DateTime();
echo $date->format('Y-m-d');

要在我的表单上呈现datepicker字段,我使用的是bootstrap datepicker(https://bootstrap-datepicker.readthedocs.io/en/stable/options.html#format)。格式要求在此处生成相同的上一个日期有点不同" yyyy-mm-dd"。

虽然我可以理解datepicker格式可以与PHP不同。但我无法理解为什么PHP和symfony日期格式要求之间存在差异。

我不知道如何让它工作,因为可以有很多格式,用户可以选择。因此,用户选择他的日期格式首选项,我需要在任何地方生成相同的日期字符串。

我正在考虑一些可以将PHP日期字符串转换为symfony和javascript格式的转换器,或者如果我可以设法更改symfony的dateformatter,它在我看来也有帮助。

1 个答案:

答案 0 :(得分:0)

你混淆了symfony格式和html5格式。没有symfony格式,rfc指的是html规范。

你应该为你的前端:

  1. 创建一个twig过滤器,以用户格式首选项输出任何日期时间
  2. 使用javascript日期小部件而不是html日期输入。主要是因为 html日期窗口小部件的格式无法更改,您无法使用应用程序的用户格式首选项。它是以RFC3339格式提供给请求的格式:YYYY-mm-dd
  3. 总而言之,您的控制器和模型应该只处理Datetimes对象