跳到正文
gloomcheng/

ARCHIVE / 

[Drupal] DrupalDateTime 的用法

過往在 Drupal 7 以前,「日期」欄位存的是 UNIX timestamp 的格式,所以取出欄位值後,通常會需要用 date1 函式來轉換日期的呈現格式。

DrupalDateTime2 是擴充 PHP DateTime3 的類別,自 Drupal 8 開始,核心提供的「日期」欄位預設都是 DrupalDateTime 類別實作的,這意味著,在取用 Entity 時可以直接使用 DrupalDateTime 提供的方法(method)來轉變日期的格式,而不需要再透過 date 來處理。

例如:

// get unix timestamp
$timestamp = $node->field_date->date->getTimestamp();
// get a formatted date
$date_formatted = $node->field_date->date->format('Y-m-d H:i:s');

How to get formatted date string from a DateTimeItem object 有更多討論,以及 DrupalDateTime 的用法說明。

至於是否能用 $node->get('field_date') 的方法來取得 DrupalDateTime 的 date 資訊?這就需要再找時間測試了。

Footnotes

  1. PHP: date

  2. DrupalDateTime

  3. PHP: DateTime