Symfony DateTimeType 没有秒数/当天的 TimeType

对于我的项目,我需要多个具有“特殊”配置的 DateTimeTypes - 但我根本不知道如何实现这些东西(Symfony 5)。

1. DateTimeType 不带秒(但仍然是 HTML5)

 $builder
    ->add('arrival', DateTimeType::class, ['label' => 'Arrival', 'input' => 'datetime_immutable', 'widget' => 'single_text']);

这会呈现一个 HTML5 输入字段,其类型datetime-local正是我想要的 - 除了它仍然有几秒钟:

http://img4.mukewang.com/6342baa600014e4402180055.jpg

我想删除:46 。这显然来自 symfony 自动设置的 value 选项(?):

http://img1.mukewang.com/6342bab10001505a01910028.jpg

从技术上讲,这已经在 chrome 等中有效。但是,由于秒数,这在 Safari 中的客户端验证失败。

如何删除秒?format选项不能使用(因为它需要将html5设置为false)!

2.当日时间类型

如果您将 TimeType 与DateTime对象一起使用,日期将始终是1970-01-01完全有意义的 - 但是您如何预先选择对象的日期(例如今天)并让用户选择时间?

我怎样才能做到这一点?


慕运维8079593
浏览 72回答 1
1回答

aluckdog

为了设置今天的默认值,我construct在我的实体对象中使用该方法。    public function __construct()    {        $this->arrival = new \DateTimeImmutable();        $this->departure = \new \DateTimeImmutable();    }Q1 的答案:为了删除秒,只需创建一个DateTime没有秒的新对象。    public function __construct()    {        $this->arrival = \DateTimeImmutable::createFromFormat('Y-m-d H:i', date('Y-m-d H:i'));        $this->departure = \DateTimeImmutable::createFromFormat('Y-m-d H:i', date('Y-m-d H:i'));    }    //$this->arrival = new \DateTimeImmutable(date('Y-m-d H:i')); //this also works, but needs execption handling (try/catch)Q2的答案:此问题的答案相同 - 只需在实体中预设当前日期并使用TimeType让用户选择时间。
打开App,查看更多内容
随时随地看视频慕课网APP