web-dev-qa-db-fra.com

Conversion d'un horodatage en PHP format de date pour un champ dans un modèle de nœud

J'ai un champ d'image, 'event_image' et l'impression de toutes les variables possibles pour le champ me dit que j'ai un horodatage comme variable possible de l'image à rendre. J'utilise:

print '<pre>';
var_dump(get_defined_vars());
print '</pre>

// renders:
["timestamp"]=>
string(10) "1348629688"

... dans node--mycustom.tpl.php pour obtenir les variables.

Maintenant, je peux rendre l'horodatage en tant que tel:

<?php print $node->field_event_image['und'][0]['timestamp'] ?>

... et il imprime un horodatage au format UNIX comme:

1348629688

Je voudrais convertir ceci en un format de date PHP. Donc je suppose que je devrais convertir l'horodatage UNIX d'une manière ou d'une autre en utilisant le PHP gmdate function. Généralement, j'utiliserais quelque chose comme ça pour le php brut:

  $mytimestamp=1348629688;
  print gmdate("m-d-Y", $mytimestamp);

Ce qui prendrait mon horodatage et ma sortie:

09-26-2012

... mais je ne sais pas comment faire dans le contexte de mon champ drupal 7 et du modèle de nœud.

MISE À JOUR:

Sur la base du commentaire de clive ci-dessous, il s'avère qu'une fonction de prétraitement est la voie à suivre: Donc, dans le fichier template.php de mon thème, j'ai maintenant:

function MYTHEME_preprocess_node(&$vars, $hook) {

$node = $vars['node'];
$field_items = field_get_items('node', $node, 'field_event_image');
$vars['upload_date'] = format_date($field_items[0]['timestamp'], 'mdy');

}

... puis dans mon modèle de nœud personnalisé, j'ai:

<?php print $upload_date; ?>

Remarque, 'mdy' est un format personnalisé que j'ai défini dans l'interface Drupal. C'est mieux que d'utiliser gmdate je suppose.

4
Danny Englander

Comme l'a déjà souligné Mohammed Shameem:

<?php print gmdate("m-d-Y", $node->field_event_image['und'][0]['timestamp']) ?>

Cependant, la manière Drupal serait:

<?php print format_date($node->field_event_image['und'][0]['timestamp'], 'short'); ?>

Cette dernière construction affichera la date dans le format standard de date courte configuré pour le site. Le premier utilisera le format vous choisissez. La méthode Drupal garantit que le format de la date est standardisé sur tout le site.

6
Free Radical

Un autre exemple basé sur le champ dans l'objet utilisateur:

  global $user; 
  $curr_user = user_load($user->uid);
  $field_items = field_get_items('user', $curr_user, 'field_some_date_end');

  $datetime = $field_items[0]['value']; // Unix time
  $formatted = format_date($datetime, 'short'); // Date in short format
0
kenorb