Skip to content

Drupal - Programmgesteuertes Setzen von Datumsfeldern in Drupal 7: Datum, Datum (ISO-Format) und Datum (Unix-Zeitstempel)

Lösung:

Hier ist ein Code, der die Zeitzone der Website für mich richtig behandelt:

 $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',
  );

Jeder Datumsfeldtyp erwartet einen unterschiedlich formatierten Zeitstempel (je nachdem, wie er in der Datenbank gespeichert ist):

// 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");

Beachten Sie, dass Sie kein vollständiges Datum angeben müssen. für datetime und date können Sie einfach mit Nullen auffüllen, zB "2011-05-00 00:00:00" (datetime), "2011-00-00T00:00:00" (date), etc. Für datestamp können Sie einfach tun Sie zB strtotime("2011-05-25").

Wichtig: Beachten Sie auch, dass der genaue von Ihnen angegebene Wert zwar in der Datenbank gespeichert wird, die tatsächlich auf der Site angezeigte Zeit jedoch je nach Zeitzoneneinstellungen unterschiedlich sein kann. Wenn Sie ein neues Datums-/Datums-/Datumsstempel-Feld erstellen, können Sie zwischen fünf verschiedenen Zeitzonen-Behandlungsmethoden wählen. Die Standardeinstellung ist "Zeitzone der Site":

Bei der Eingabe von Daten in das Feld wird davon ausgegangen, dass sich die eingegebenen Daten in der Zeitzone der Site befinden. Wenn die Daten in der Datenbank gespeichert werden, werden sie in UTC konvertiert. Wenn Sie jedoch ein Datumsfeld wie im obigen Beispiel programmgesteuert festlegen, findet keine Konvertierung statt. Achten Sie also darauf, dass Sie die Zeitzoneneinstellungen des Felds berücksichtigen. Mit anderen Worten, wenn Sie die "Zeitzone der Site" verwenden, stellen Sie sicher, dass die Zeit in UTC angegeben ist.

Diese Informationen wurden aus dem Abschnitt mit der Bezeichnung Datumsfeld (datetime, date, datestamp) auf fooninjas Blog referenziert.

Dies ist auch eine großartige allgemeine Ressource für die programmatische Knotenerstellung in Drupal 7.

Das hat bei mir funktioniert.

$node->field_date[LANGUAGE_NONE][0] = array(
      'value' => date('Y-m-d H:i:s', strtotime('now')),
      'timezone' => 'UTC',
      'timezone_db' => 'UTC',
);
Click to rate this post!
[Total: 0 Average: 0]


Tags : / /

Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.