首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在正确的时区中呈现日期字段中的日期?

问在正确的时区中呈现日期字段中的日期?
EN

Stack Overflow用户
提问于 2017-01-10 10:58:27
回答 1查看 1.6K关注 0票数 1

Im有一个日期时间类型的字段。我看到在数据库中总是保存其他时区,而不是默认的。当呈现节点内容时,日期看起来很好,但是当我试图从代码中获取节点时,我不能在正确的时区中呈现日期。

代码语言:javascript
复制
$node->field_customtime->getValue()

我有带有标准时区的数组值,当我转储值时,时间是错误的。所以我试着这样做:

代码语言:javascript
复制
$value = $node->field_customtime->getValue();
$value = $value[0]['value'];
$date = new \DateTime($value);
$date = $date->getTimestamp();
echo \Drupal::service('date.formatter')->format($date);

数据库中仍然有原始数据(错误)。我不知道如何从自定义日期字段中更正显示日期。我在表格中看到了正确的日期(即欧洲时间11:00 ),但在数据库中是10:00。在节点页上11:00是正确的,所以drupal以某种方式转换它,但是如何实现??

EN

回答 1

Stack Overflow用户

发布于 2017-01-10 12:22:05

我假设你在使用MySQL?如果是这样的话,除非您正在保存时间戳,否则时区并不重要。它应该被保存在你发送它的方式上。

如果是时间戳,则日期将自动转换为UTC存储,然后转换回在mysql配置中设置的任何时区。

MySQL将时间戳值从当前时区转换为UTC存储,并从UTC转换回当前时区进行检索。(对于其他类型,如DATETIME,则不会发生这种情况。)

您需要首先检查的是如何保存日期。你在储存时间戳吗?

如果不是,您需要检查数据是如何保存的,并查看在插入到数据库之前是否发生了任何事情。

不幸的是,我对Drupal不太了解,但是经过快速的google之后,我发现Drupal 7恰好有一些处理日期时间的方法。这很可能适用于Drupal 8,您只需调整配置即可。https://drupal.stackexchange.com/questions/3613/the-differences-between-date-time-zone-handling

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41567169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档