evenementen/create en stadsactiviteiten/create (Drupal 7, custom.module)Symptoom (gemeten 2026-09-13, nid 217916): de app stuurt
"datum_start":"2026-09-25 20:20:00" (lokale Nederlandse tijd), de site toont
22:20. Drupal leest de string als UTC en rendert in Europe/Amsterdam.
Fix — in custom.evenementen_aanmaken.inc, op de plek waar datum_start
(en datum_eind) naar field_date gaat. Interpreteer de binnenkomende
string expliciet als Amsterdamse tijd en sla 'm als UTC op (Date-veld met
timezone_db = UTC, de gebruikelijke instelling):
/**
* Zet een lokale (Europe/Amsterdam) datumstring om naar de UTC-string die
* een Date-veld met timezone_db = 'UTC' verwacht.
*/
function _custom_lokaal_naar_utc($s) {
$s = trim($s);
if ($s === '') {
return '';
}
try {
$d = new DateTime($s, new DateTimeZone('Europe/Amsterdam'));
}
catch (Exception $e) {
return $s; // ongeldig formaat: laat de bestaande validatie het afvangen
}
$d->setTimezone(new DateTimeZone('UTC'));
return $d->format('Y-m-d H:i:s');
}
en dan waar de waarde gezet wordt (naam van de variabelen kan afwijken):
$start = _custom_lokaal_naar_utc($data['datum_start']);
$eind = !empty($data['datum_eind']) ? _custom_lokaal_naar_utc($data['datum_eind']) : $start;
$node->field_date[LANGUAGE_NONE][0]['value'] = $start;
$node->field_date[LANGUAGE_NONE][0]['value2'] = $eind;
$node->field_date[LANGUAGE_NONE][0]['timezone'] = 'Europe/Amsterdam';
$node->field_date[LANGUAGE_NONE][0]['timezone_db'] = 'UTC';
Controleer eerst hoe het veld is ingesteld: timezone_db van
field_date (Structure → Content types → Evenement → field_date → "Time zone
handling"). Staat die op "No time zone conversion" / timezone_db = '', dan
is de fix juist omgekeerd: dan moet de string ongewijzigd opgeslagen worden en
zit de +2u in de weergave (views-datumformat met tijdzone).
Verificatie: één testevenement indienen met 20:20 en in
flutterflow_events.json?nid=<nid> moet datum op 20:20 uitkomen. Dezelfde
route geldt voor stadsactiviteiten/create (zelfde helper hergebruiken).
Aan de app-kant is niets nodig — die stuurt bewust lokale tijd; als je hier
UTC gaat verwachten, moet datumVoorApi/de Date-Format-binding in de app mee.