为什么 AliceBundle Fixture DateTime 会给我一个意想不到的值?

Why does AliceBundle Fixture DateTime give me an unexpected value?

我目前正在开展一个项目,在该项目中,我使用 Alice-bundle 创建固定装置以进行 运行 测试,以确保我的 API-端点正常工作。一切正常,除了 DateTime 属性。

无论我传递什么字符串,例如:<dateTime('2019-09-23 14:00:00')>,它总是给我错误的日期和时间,通常是这样的:1998-10-25T14:29:45+01:00

即使使用 <dateTime('now')> 也不起作用——它也给了我一些 2000 年代之前的日期和时间,而这正是我发现的一些例子确实使用的。

固定装置可能看起来像这样:

Path\To\Task\Entity: my_task: title: 'My tasks' description: 'These are all the tasks just for me!!!' startsAt: <dateTime('now')> endsAt: <dateTime('now')> createdBy: '@some_higher_user'

理想情况下,我只想向它传递一个字符串,这样我就可以定义日期和时间并确保它以正确的格式正常工作。

将不胜感激。

这就是它的工作原理。 <dateTime()> 函数接受一个名为 $max 的参数。所以它所做的是在开始日期(不确定是哪一个,可能在 1900 年左右)和那个 $max 参数之间创建一个日期。

我想您会想使用 <dateTimeBetween()>,它需要一个开始日期和一个结束日期来在它们之间创建一个假日期。所以我想如果 startDate = endDate,那么您将获得所需的固定日期。

查看 fzaninotto/Faker 库文档。它是 AliceBundle 用来伪造数据的库。在那里你可以看到你可以使用哪些 DateTime 相关的功能。

看这里 https://github.com/nelmio/alice/blob/master/doc/advanced-guide.md#functions 我们读到:

function can be a Faker or a PHP native (or registered in the global scope) function.

所以我建议尝试使用 PHP 本机函数来创建 \DateTime 对象

<date_create_from_format ( 'Y-m-d H:i:s' , '2019-09-23 14:00:00')>
// or
<date_create('now')>