如何使用Date模块在Drupal中正确显示时间?

时间:2011-12-21 16:13:35

标签: php datetime timezone drupal-7

在我的Drupal网站上创建一个新事件时,我将事件的日期/时间设置为我假设的当地时间。我希望系统中的日期/时间设置为我在添加/编辑表单上看到的值,但不是;它被设置为UTC。

Event Start (add/edit form): 2012-12-20 1:00pm EST
Event Start (database):      2012-12-20 6:00pm UTC

当我使用date()显示此日期/时间时,即使将默认时区设置为EST(“America / Toronto”),日期/时间仍然显示在2012-12-20下午6:00。

问题似乎不一定是drupal,日期/时间以其存储方式显示,但我认为问题可能是添加/编辑表单上的日期/时间输入控件。 ..可能的javascript时间相关。


这些值在显示时发布:下午5:00作为3个不同的值转到服务器:5,00,PM。它们以UTC身​​份存储在数据库中,但无论我尝试什么,它们始终显示为UTC。我尝试过format_date,date_default_timezone_set,在.htaccess文件中设置PHP时区......没有运气:s


讨厌必须手动完成,但这可行:

$tz = new DateTimeZone('America/Toronto');  
$offset = $tz->getOffset(new DateTime($start_date));
$start_stamp = strtotime($start_date) + $offset;

1 个答案:

答案 0 :(得分:-1)

如果您有日期格式化程序(配置页面位于/ admin / config / regional / date-time),您可以使用计算机名称重复使用它:

$date = new DateObject($timestamp);
$value = date_format_date($date, 'my_date_string_format');