dude
I'm new here

Datum in UTC Zeitzone ausgeben

Jump to solution

Hallo,

ich versuche gerade, ein Datum in UTC-Zeit auszugeben. Dazu probiere ich folgendes:

$CMS_SET(sdf, class("java.text.SimpleDateFormat").new())$

$CMS_SET(void, sdf.setTimeZone(java.util.TimeZone.getTimeZone("UTC")))$

$CMS_SET(void, sdf.applyPattern("hh:mm"))$

$CMS_VALUE(sdf.format(class("java.util.Date").new()),default:"null")$

Problem ist wohl, dass das Objekt vom Typ Date kurz nach dem Anlegen in Wirklichkeit ein GregorianCalendar-Objekt ist:

$CMS_SET(date, class("java.util.Date").new())$

$CMS_VALUE("Date is of type '" + date.class + "'")$

<output>

Date is of type 'class java.util.GregorianCalendar'

Kann mir jemand weiterhelfen?

Danke und viele Grüße,

Matthias


1 Solution

Accepted Solutions

Hallo zusammen,

Ich fände es ja viel einfacher, direkt die entsprechende Zeitzone zu benutzen Smiley Wink

In 4.2R4 geht folgendes problemlos:

$CMS_VALUE(#global.now.timeZone("UTC").format("dd.MM.yyyy hh:mm:ss z"))$

Um sich einen Überblick zu verschaffen, was möglich ist, kann man auch einfach mal dies hier ausprobieren:

<h1>alle Zeitzonen</h1>

$CMS_VALUE(#global.now.timeZone.availableIDs.sort.toString("<br>"))$

<h1>Ausgabe in Zeitzonen</h1>

$CMS_VALUE(#global.now.format("dd.MM.yyyy hh:mm:ss z"))$<br>

<br><br><br>

$CMS_VALUE(#global.now.timeZone)$<br>

$CMS_VALUE(#global.now.timeZone("America/Los_Angeles").format("dd.MMMM.yyyy hh:mm:ss Z","EN"))$<br>

$CMS_VALUE(#global.now.timeZone("Europe/Berlin").format("dd.MM.yyyy hh:mm:ss z"))$<br>

Viele Grüsse aus Dortmund,

  Holger

P.S. class("java.util.Date").new() ist genauso das aktuelle Datum wie #global.now, insofern würde ich ersteres nicht verwenden Smiley Wink

Nachricht geändert durch Holger Höbbel Auf entsprechende Bitte das P.S. durchgestrichen

View solution in original post

0 Kudos
6 Replies
Peter_Jodeleit
Crownpeak employee

Formatierte Ausgabe kann man über 'date.format(pattern)' erreichen.

$CMS_SET(void, sdf.setTimeZone(java.util.TimeZone.getTimeZone("UTC")))$

Das klappt nicht, da muss noch ein class(..) drum.

Nicht ausprobiert, aber ich denke, folgendes sollte funktionieren:

$CMS_SET(date, date.setTimeZone(class("java.util.TimeZone").getTimeZone("UTC")))$

$CMS_VALUE(date.format("hh:mm"))$

Problem ist wohl, dass das Objekt vom Typ Date kurz nach dem Anlegen in Wirklichkeit ein GregorianCalendar-Objekt ist:

Für einige Methode wird der Typ transparent von java.util.Date nach java.util.Calendar umgewandelt.

Peter

Hallo zusammen,

Ich fände es ja viel einfacher, direkt die entsprechende Zeitzone zu benutzen Smiley Wink

In 4.2R4 geht folgendes problemlos:

$CMS_VALUE(#global.now.timeZone("UTC").format("dd.MM.yyyy hh:mm:ss z"))$

Um sich einen Überblick zu verschaffen, was möglich ist, kann man auch einfach mal dies hier ausprobieren:

<h1>alle Zeitzonen</h1>

$CMS_VALUE(#global.now.timeZone.availableIDs.sort.toString("<br>"))$

<h1>Ausgabe in Zeitzonen</h1>

$CMS_VALUE(#global.now.format("dd.MM.yyyy hh:mm:ss z"))$<br>

<br><br><br>

$CMS_VALUE(#global.now.timeZone)$<br>

$CMS_VALUE(#global.now.timeZone("America/Los_Angeles").format("dd.MMMM.yyyy hh:mm:ss Z","EN"))$<br>

$CMS_VALUE(#global.now.timeZone("Europe/Berlin").format("dd.MM.yyyy hh:mm:ss z"))$<br>

Viele Grüsse aus Dortmund,

  Holger

P.S. class("java.util.Date").new() ist genauso das aktuelle Datum wie #global.now, insofern würde ich ersteres nicht verwenden Smiley Wink

Nachricht geändert durch Holger Höbbel Auf entsprechende Bitte das P.S. durchgestrichen

0 Kudos

Super, funktioniert. Vielen Dank dafür.

Nur bin ich jetzt mehr und mehr irritiert, welche Objekte man da genau in den Händen hat. Wie im ersten Post geschrieben, liefert Date() bei .getClass() 'GregorianCalendar'. #global.now ist wohl auch vom Typ GregorianCalendar ... Und jetzt schreibst du, das SimpleDateFormat.new() das selbe #global.now ist.

Gab es irgendwo eine Beschreibung, wie die ExpressionLanguage von FirstSpirit aufgebaut ist? Es scheint da, zumindest aus meiner Sicht, viele hidden Features zu geben. Auch die Hilfe, die mit dem FS-Server kommt, beschreibt nur wenige Funktionen (isSet(), if(), ref(), font(), legacyCompare()). Wo z. B. ist eigentlich class("x.y.z") beschrieben?

P.S. class("java.text.SimpleDateFormat").new() ist genauso das aktuelle Datum wie #global.new, insofern würde ich ersteres nicht verwenden Smiley Wink

Das stimmt natürlich nicht. Vertipper?

Peter
0 Kudos

Nur bin ich jetzt mehr und mehr irritiert, welche Objekte man da genau in den Händen hat.

Das kommt durch die 'Anomalie' von "date.class" - das könnte man auch als Bug bezeichnen. Der Vertipper von Holger ist natürlich auch nicht hilfreich. Ignoriere einfach sein "post scriptum".

Peter
0 Kudos

Vertippter korrigiert

0 Kudos