---
title: "Liferay Freemarker Tips en Tricks: Datum & Tijdstip"
description: In deze blogpost gaan we het hebben over Liferay Freemarker en geven we je wat tips en trucs over hoe je datum &amp; tijd kunt gebruiken.
---

[ACA Group Blog | Inzichten over Softwareontwikkeling, UX/UI, Data & Innovatie ](https://acagroup.be/nl/blog)

# [Liferay Freemarker Tips en Tricks: Datum & Tijdstip](https://acagroup.be/nl/blog/liferay-freemarker-date-time)

 Geschreven door [Dorien Jorissen](https://acagroup.be/nl/blog/author/dorien-jorissen) | 27-jan-2017 0:00:00

Ik werk al een tijdje met Liferay, maar ik moet bekennen dat ik nog steeds niet echt de overstap heb gemaakt van Velocity naar Freemarker voor mijn templates. Ook al weet ik dat er veel voordelen zitten aan het gebruik van Freemarker, zoals betere foutmeldingen, de Velocity kennis en bibliotheek met snippets die ik door de jaren heen heb opgebouwd is moeilijk op te geven. Maar met de komst van Liferay DXP lijkt het nu de perfecte tijd om over te stappen.

Terwijl ik vandaag werkte aan een probleem, waarbij de wijzigingsdatum van een asset niet werd bijgewerkt bij het uitchecken/inklikken van een nieuwe versie, moest ik iets veranderen in een weergavesjabloon van Freemarker dat werd gebruikt om een lijst met documenten weer te geven. In eerste instantie, voordat ik wist dat er een probleem was in Liferay, dacht ik dat het probleem was dat de template de **timeZone**niet doorgaf  aan de **dateUtil** aanroep in de template:

```
<ul> <#list entries as entry> <#assign dateFormat = "MMM d, HH':'mm" /> <li>${entry.getTitle()} - ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale)}</li> </#list> </ul>
```

Dit leek dus het perfecte moment om te kijken hoe ik dit kon oplossen en of er verbeteringen mogelijk waren. Ik begon met het maken van de regel zoals hij was en voegde alleen de**timeZone** toe ( die al aanwezig is in de sjablooncontext - zie[com.liferay.portal.template.TemplateContextHelper](https://github.com/liferay/liferay-portal/blob/7.0.x/portal-impl/src/com/liferay/portal/template/TemplateContextHelper.java)).

```
<ul> <#list entries as entry> <#assign dateFormat = "MMM d, HH':'mm" /> <li>${entry.getTitle()} - ${dateUtil.getDate(entry.getModifiedDate(), dateFormat, locale, timeZone)}</li> </#list> </ul>
```

Hoewel deze oplossing de truc doet en de juiste datetime produceert in de tijdzone die we willen, zag het er een beetje omslachtig uit. Dus vroeg ik me af of Freemarker wat dingen had die het korter/zoeter/beter zouden kunnen maken. Na wat rondgekeken te hebben, vond ik deze 2 dingen:[ingebouwde datumopmaak](http://freemarker.org/docs/ref_builtins_date.html) en [verwerkingsinstellingen](http://freemarker.org/docs/ref_directive_setting.html).

De eerste zou ons in staat stellen om de**dateUtil** te laten vallen, maar lijkt geen regeling te hebben voor het opgeven van een**locale** en/of **tijdzone**. Dit is waar het tweede artikel om de hoek komt kijken. Met deze verwerkingsinstellingen kunnen we een aantal dingen instellen waar de verdere verwerking van Freemarker rekening mee houdt en gelukkig voor ons is datetime een van die dingen. Dus met de combinatie van beide wordt ons[sjabloon](https://gist.github.com/planetsizebrain/737ca5f781560bb79ebb9bc34141efe2):

```
<#setting time_zone=timeZone.ID> <#setting locale=locale.toString()> <#setting datetime_format="MMM d, HH':'mm"> <ul> <#list entries as entry> <li><li>${entry.title} - ${entry.modifiedDate?datetime}</li></li> </#list> </ul>
```

Nu zie je dat we de processor vooraf kunnen instellen om de Liferay tijdzone en locale te gebruiken, maar ook het door ons gekozen[datetime formaat](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html). Hierdoor kunnen we direct de Freemarker**?datetime** functie gebruiken op het datumveld van de asset invoer. Dit geldt ook voor alle andere datums die u in deze sjabloon wilt afdrukken met**?datetime** ( of*?date* of *?time*). Omdat het alleen van toepassing is op één procesgang, kunt u verschillende sjablonen, die deze procesinstellingen verschillend instellen, op dezelfde pagina hebben zonder dat ze elkaar storen. De volgende schermafbeelding toont de bovenstaande sjabloon en dezelfde sjabloon waarin de tijdzone, locale en datetime-indeling anders zijn ingesteld:

De schoonheid en het gebruiksgemak van deze kleine verbetering heeft me al van gedachten doen veranderen en hopelijk kan ik in de toekomst meer Freemarker gerelateerde blogposts schrijven.

[Volledig bericht weergeven](https://acagroup.be/nl/blog/liferay-freemarker-date-time)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Dorien Jorissen"
  },
  "dateModified" : "2026-04-01T11:55:55.353Z",
  "datePublished" : "2017-01-27T00:00:00Z",
  "headline" : "Liferay Freemarker Tips en Tricks: Datum & Tijdstip",
  "image" : {
    "@type" : "ImageObject",
    "height" : 1537,
    "url" : "https://25145356.fs1.hubspotusercontent-eu1.net/hubfs/25145356/Imported_Blog_Media/1657264400-liferay-freemarker-date-and-time-1-min-1.png",
    "width" : 2560
  },
  "mainEntityOfPage" : "https://acagroup.be/nl/blog/liferay-freemarker-date-time",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60.0,
      "url" : "https://25145356.fs1.hubspotusercontent-eu1.net/hubfs/25145356/SVG%20Icons/aca-group%20(white).svg",
      "width" : 134.21053
    },
    "name" : "Blog"
  }
}
```