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.
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');
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');
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();
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();