【发布时间】:2017-11-14 10:42:05
【问题描述】:
根据http://php.net/manual/en/class.datetime.php
PHP 遵循“ATOM”日期格式。要生成像“2017-11-14”这样的日期,我们需要日期格式字符串“Y-m-d”。我可以使用 php date 函数和类来生成它。它按预期工作。
/////Using date function////
echo date("Y-m-d");
/////Using DateTime class////
$date = new DateTime();
echo $date->format('Y-m-d');
现在我想在我的 Symfony3 应用程序中动态使用这些日期格式。根据文档,dateType 字段的格式必须符合“RFC3339”,因为它使用 IntlDateFormatter 类进行格式化。 https://symfony.com/doc/current/reference/forms/types/date.html#format
所以要产生与前一个相同的日期,我们需要不同的格式字符串
$date = new DateTime();
$dateFormat = new IntlDateFormatter(
"en_US",
IntlDateFormatter::NONE,
IntlDateFormatter::NONE,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'yyyy-MM-dd'
);
echo $dateFormat->format($date->getTimestamp());
为了在我的表单上呈现 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,我认为它也会有所帮助。
【问题讨论】:
标签: php symfony date datepicker rfc3339