web-dev-qa-db-fra.com

Comment obtenir l'horodatage Unix?

Je veux utiliser format_date(), mais cela nécessite un horodatage Unix et mes dates sont ISO.

Existe-t-il un moyen drupal de convertir la date ISO en horodatage Unix? Si j'utilise strtotime, je perds mon décalage de fuseau horaire.

6
Greg

Vous ne devriez plus utiliser format_date(). Vous devez créer un objet DrupalDateTime, puis utiliser la méthode format().

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

format_date obsolète dans Drupal 8.0.0, sera supprimé avant Drupal 9.0.0.

Il vaut mieux le faire avec Drupal façon, en utilisant Drupal service de temps:

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

Je n'arrive pas à le faire marcher. C'est ce que je passe: 2016-06-07T14: 00: 00, et j'aimerais obtenir cela en retour (sauf le faire passer par les conversions de fuseau horaire): 1465308000

C'est simple - vous pouvez utiliser la fonction standard getTimestamp () dans l'objet DrupalDateTime:

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

C'est ce que j'ai fini par utiliser. Je voudrais expérimenter davantage avec la solution de MPD et je mettrai à jour cette question si je le fais.

$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