Saltar al contenido

Drupal: establece campos de fecha mediante programación en Drupal 7: fecha, fecha (formato ISO) y fecha (marca de tiempo Unix)

Solución:

Aquí hay un código que trata la zona horaria del sitio correctamente para mí:

 $node->field_date[LANGUAGE_NONE][0] = array(
    'value' => format_date(strtotime('now'), 'custom', 'Y-m-d H:i:s', 'UTC'),
    'timezone' => 'UTC',  
    'timezone_db' => 'UTC',
  );

Cada tipo de campo de fecha espera una marca de tiempo con un formato diferente (según cómo se almacena en la base de datos):

// For datetime
$node->field_datetest[$node->language][0]['value'] = "2011-05-25 10:35:58";

// For date
$node->field_datetest[$node->language][0]['value'] = "2011-05-25T10:35:58";

// For datestamp
$node->field_datetest[$node->language][0]['value'] = strtotime("2011-05-25 10:35:58");

Tenga en cuenta que no necesita especificar una fecha completa; para fecha y hora, puede rellenar con ceros, por ejemplo, “2011-05-00 00:00:00” (fecha y hora), “2011-00-00T00: 00: 00” (fecha), etc. por ejemplo, strtotime (“2011-05-25”).

Importante: También tenga en cuenta que si bien el valor exacto que especifique se almacenará en la base de datos, la hora real que se muestra en el sitio puede ser diferente según la configuración de la zona horaria. Cuando crea un nuevo campo de fecha y hora / fecha / marca de fecha, puede elegir entre cinco métodos diferentes de manejo de zona horaria. El predeterminado es “zona horaria del sitio”:

Al ingresar datos en el campo, se asume que los datos ingresados ​​están en la zona horaria del sitio. Cuando los datos se guardan en la base de datos, se convierten a UTC. Sin embargo, si establece un campo de fecha mediante programación como en el ejemplo anterior, no se realiza ninguna conversión, así que asegúrese de tener en cuenta la configuración de la zona horaria del campo. O en otras palabras, si usa la “zona horaria del sitio”, asegúrese de que la hora esté en UTC.

Se hizo referencia a esta información en la sección denominada Campo de fecha (fecha y hora, fecha, marca de fecha) en el blog de fooninja.

Este también es un gran recurso general para la creación de nodos programáticos en Drupal 7.

Esto funcionó para mí.

$node->field_date[LANGUAGE_NONE][0] = array(
      'value' => date('Y-m-d H:i:s', strtotime('now')),
      'timezone' => 'UTC',
      'timezone_db' => 'UTC',
);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *