【问题标题】:Drupal Computed Field - Calculating TimeDrupal 计算领域 - 计算时间
【发布时间】:2010-01-01 00:25:54
【问题描述】:

我在 Drupal 中使用了一个名为“Computed Field”的流行模块。我已经使用这个字段对几个报价系统进行了动态计算。我正在尝试使用它来计算时间表类型的应用程序的时间差异。因此,用户在 CCK 日期字段中输入了两次(使用 PHP 自定义输入 g:i - 即 10:20 - 自动添加的年份),但由于某种原因,我无法让计算字段显示任何计算。

这是最简单的测试示例...仍然无法正常工作

$start_value = $node->field_ts_train_start[0]['value'];
$end_value = $node->field_ts_train_end[0]['value'];


$node_field[0]['value'] = $end_value - $start_value;

从这里,我们将变量传递给 $display。谁能明白为什么这不起作用?我愿意接受有关如何解决计算域的任何建议,或者使用整数而不是 UNIX 时间戳构建自定义函数。..

谢谢。

提姆

【问题讨论】:

    标签: drupal time


    【解决方案1】:

    这样做的关键是将日期戳 CCK 字段与自定义输入字段一起使用。日期戳应包括所有级别的时间,自定义输入仅收集 HH:MM。这会创建一个完整的 unix 时间戳。

    然后使用计算域从结束时间中减去开始时间。这样戳记存储为整数,时间除以60就可以得到分钟数。

    $start_value = $node->field_ts_start_train[0]['value'];
    $end_value = $node->field_ts_end_train[0]['value'];
    $node_field[0]['value'] = $end_value - $start_value;
    

    【讨论】:

      【解决方案2】:

      使用时间戳键,而不是值。 value 是字符串表示形式(2010 年 1 月 1 日),而 timestamp 是 UNIX 时间(1234567890)

      $start_value = $node->field_ts_train_start[0]['timestamp'];
      $end_value = $node->field_ts_train_end[0]['timestamp'];
      $node_field[0]['timestamp'] = $end_value - $start_value;
      

      【讨论】:

      • 这是很好的信息,因为这是我第一次尝试用时间进行计算。但是,它仍然出现故障。如果我将“$node_field[0]['timestamp']”更改为 ....['value'],我得到一个零,否则我得到 NULL(无字段)。日期字段的类型呢?我正在使用“日期”,我应该尝试使用 Datetime 还是 Datestamp?
      • 您的回答并不完全正确,还有一些其他变量需要考虑,例如日期字段类型和粒度。我已经解决了这个问题 - 发布解决方案作为答案..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多