[Drupal]時間・日付に関するチートシート


※随時増やしていく予定

現在の時刻を取得する

現在の時刻のタイムスタンプを取得する

\Drupal::time()->getCurrentTime();

リクエスト時刻のタイムスタンプを取得する

\Drupal::time()->getRequestTime();

日付↔タイムスタンプの変換をする

タイムスタンプを日付に変換する

use Drupal\Core\Datetime\DrupalDateTime;
$timestamp = '1640995200';
$datetime = DrupalDateTime::createFromTimestamp($timestamp);
$date = $datetime->format('Y/m/d');

日付をタイムスタンプに変換する

  • フォーマットから取得する場合
use Drupal\Core\Datetime\DrupalDateTime;
$date = '2022-01-01';
$datetime = DrupalDateTime::createFromFormat('Y-m-d', $date);
$timestamp = $datetime->getTimestamp();
  • 配列から取得する場合
use Drupal\Core\Datetime\DrupalDateTime;
$date = [
  'year' => 2022,
  'month' => 1,
  'day' => 1,
];
$datetime = DrupalDateTime::createFromArray($date);
$timestamp = $datetime->getTimestamp();

フィールド値をフォーマットする

日付フィールドの値をフォーマットする

  • タイムスタンプにする
$node->get('field_my_date')->date->getTimestamp();
  • 任意のフォーマットにする
$node->get('field_my_date')->date->format('Y-m-d H:i:s')                 ;

タイムスタンプフィールドの値をフォーマットする

$timestamp = $node->get('field_my_timestamp')->getString();
$date = DrupalDateTime::createFromTimestamp($timestamp)->format('Y-m-d');

Drupalに登録されているフォーマットを使う

「Drupalに登録されているフォーマット」= /admin/config/regional/date-timeで登録されているフォーマット

$date = \Drupal::service('date.formatter')->format($timestamp,'my_custom_format');