2010-01-01 214 views
1

我在Drupal中使用了一個名爲「計算字段」的流行模塊。我已經使用這個字段來爲幾個報價系統進行實時計算。我試圖用它來計算時間表類型的應用程序的時間差異。因此,用戶輸入兩次CCK日期字段(使用PHP自定義輸入g:i - 即10:20 - 年自動添加),但由於某些原因,我無法獲取計算字段以顯示任何計算結果。Drupal計算字段 - 計算時間

這是最簡單的測試例子...仍然不會工作

$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; 

從這裏,我們通過變量$顯示。任何人都可以看到爲什麼這不起作用?我很樂意提供有關如何解決計算字段的建議,或者使用整數而不是UNIX時間戳來構建自定義函數。

謝謝。

回答

2

這裏的關鍵是使用自定義輸入字段的日期戳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; 
0

使用時間戳鍵,而不是價值。值是串表示(2010年1月1日),而時間戳是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; 
+0

這是很好的信息,這是我第一次嘗試做計算隨着時間。但是,它仍然存在故障。如果我將「$ node_field [0] ['timestamp']」更改爲.... ['value'],我得到一個零,否則我得到NULL(無字段)。日期字段的類型怎麼樣?我使用「日期」,我應該嘗試日期時間還是日期戳? – tpow 2010-01-03 15:31:12

+0

你的答案並不完全正確,還有一些其他變量需要考慮,例如日期字段類型和粒度。我解決了這個問題 - 發佈解決方案作爲答案.. – tpow 2010-01-04 15:54:11