web-dev-qa-db-ja.com

Unixタイムスタンプを取得するにはどうすればよいですか?

format_date()を使用したいのですが、Unixタイムスタンプが必要で、日付はISOです。

ISO日付をUnixタイムスタンプに変換するdrupal方法はありますか?strtotimeを使用すると、タイムゾーンオフセットが失われます。

6
Greg

format_date()はもう使用しないでください。 DrupalDateTimeオブジェクトを作成してから、format()メソッドを使用する必要があります。

$date = \Drupal\Core\Datetime\DrupalDateTime::createFromFormat('c', $my_iso_8601_date);
$my_rfc2822_string = $date->format('r');
10
mpdonadio

format_date Drupal 8.0.0で廃止予定、Drupal 9.0.0。の前に削除されます。

Drupal方法で、Drupalタイムサービスを使用して、

$time_value = \Drupal::time()->getCurrentTime();
print \Drupal::service('date.formatter')->format($time_value, 'long');
2
Saud Alfadhli

うまく動かない。これは私が渡しているものです:2016-06-07T14:00:00、そして私はこれを代わりに取得したいと思います(タイムゾーン変換を通過する場合を除く):1465308000

簡単です。DrupalDateTimeオブジェクト内で標準のgetTimestamp()関数を使用できます。

$date = '2016-06-07T14:00:00';
$dateTime = new DrupalDateTime($date, 'UTC');
$timestamp = $dateTime->getTimestamp();
1

これは私が最終的に使用したものです。 MPDのソリューションをさらに実験したいと思います。そうした場合は、この質問を更新します。

$start_date = new DateTime($my_IOS_date, new DateTimeZone('UTC'));
$start_date->setTimezone(new DateTimeZone('America/New_York'));

$my_timestamp = $start_date->getTimestamp();
1
Greg