symfony - 在数据库中以 UTC 格式保存的 Behat 测试用例中断言日期时间

标签 symfony datetime utc behat

我已经创建了 Behat 测试用例来断言日期时间。 日期时间已以 UTC 格式存储在我的数据库中。因此,使用 IntlDateFormatter 函数根据选定的区域设置(如 en、de 或 fr)进行转换。

我面临的问题是测试用例在我的本地计算机上运行良好,但在服务器上我必须断言日期时间与数据库值 UTC 格式相同。

例如保存的值为 2016-01-01 00:00:00。 从 UTC 转换回 php 值后,网站上显示的值是“01-01-2016 01:00”。

使用“01-01-2016 01:00”进行本地断言。 但在服务器上,它使用“01-01-2016 00:00”而不是“01-01-2016 01:00”。

谁能告诉我为什么测试用例因日期时间断言而失败?

最佳答案

创建日期时您似乎忽略了时区设置。

您需要在创建日期的所有位置(您的代码和行为测试)显式定义时区,或者确保所有环境都具有相同的时区设置(对于 php 以及数据库) 。

第二个选项对您来说可能会更容易、更快捷。第一个是更防弹。

关于symfony - 在数据库中以 UTC 格式保存的 Behat 测试用例中断言日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960651/

相关文章:

php - 使用来自自定义服务的编译器传递加载 Symfony 的参数

apache - Symfony2 : Failed to start the session because headers have already been sent

php - Doctrine :迁移:差异未检测非标准目录中实体的映射信息

mysql - 在 DQL 中加入并计数

c# - 字符串到日期时间解析

javascript - GMT 与 UTC 日期

javascript - 每年倒数一天(并找到当年那一天的日期)

validation - Json 模式日期时间验证,包括特定日期

python - Python 的 time.time() 是否返回 UTC 时间戳?

c++ - 在 Windows XP/Server 2003 下将新旧本地时间转换为 UTC