Prinzessin
I'm new here

Datum class.date in Unix-Timestamp umwandeln

Hallo,

ich habe ein Feld "cs_date" vom Typ date und möchte dieses in einen Timestamp umwandeln.

Beispiel 1:
Datum: 25.10.13 (00.00 Uhr) müsste diesen Timestamp ergeben: 1382652000 

Wenn ich das aber mit diesem Befehl versuche

$CMS_VALUE(cs_date.milliseconds)$

erhalte ich den Wert 1382652000000

Beispiel 2:
Datum: 27.05.13 (14.00 Uhr) ergibt über die Ausgabe mit dem Befehl $CMS_VALUE(cs_date.milliseconds)$

den Wert 1369656000000.

(Wahrscheinlich, weil die Uhrzeit mit berücksichtigt wird.)

Ich möchte bei diesen beiden Fällen, dass immer nur das Datum (Tag.Monat.Jahr) berücksichtigt werden und der Timestamp damit berechnet wird. Die Uhrzeit soll immer 0.00 Uhr sein - egal ob dort 14 Uhr oder etwas anderes steht.

Desweiteren habe ich in der Dokumentation und hier bisher keinen Befehl gefunden, der mir den passenden Timestamp so liefert, wie ich ich ihn benötige.

Knan hier jemand helfen?

0 Kudos
7 Replies
Prinzessin
I'm new here

Zu Beispiel 2 wäre der richtige Timstamp zu 27.05.13 (0.00 Uhr) dieser: 1369605600

0 Kudos

Hi,

ist doch alles korrekt. Die Methode milliseconds liefert Millisekunden, keine Sekunden. Smiley Wink

Gruß

Stefan

0 Kudos

Ok, das war ein Denkfehler 😉

Aber mein anderes Problem ist noch nicht gelöst:

Wie kann ich die Uhrzeit des Datumsfeldes ignorieren bzw. immer auf 0.00 Uhr setzen?

Ich lese einen Wert aus dem Feld cs_date aus und gebe ihn mit diesem Befehl aus:

$CMS_VALUE(cs_date.milliseconds / 1000)$

Das klappt, so lange im Feld cs_date ein Datum und die Uhrzeit 0.00 Uhr steht.

Wenn das Feld ein Datum und z. B. 14.00 Uhr enthält, passt der Timestamp für mich nicht mehr.

Ich habe das schon so versucht:

$CMS_VALUE(cs_date.format("dd.MM.yy").milliseconds / 1000)$

und so:

$CMS_VALUE(cs_date.format("dd.MM.yy 00.00.00").milliseconds / 1000)$

Klappt aber leider alles nicht.

0 Kudos

Hallo Yvonne,

cs_date.format liefert dir einen String zurück der deinem Pattern entspricht. Eine Methode milliseconds gibt es im String Objekt nicht.

Das was du möchtest, kannst du dir mit folgendem Templatecode selbst zusammen bauen.

$CMS_SET(millis, cs_date.milliseconds)$

$CMS_SET(msInDay, 1000 * 60 * 60 * 24)$

$CMS_SET(msPortion, millis % msInDay)$

$CMS_SET(newMillis, millis - msPortion)$

$CMS_VALUE(newMillis)$

Viele Grüße

Thorsten

0 Kudos

Eventuell geht auch Folgendes:

$CMS_VALUE(cs_date.set("hour", 0).set("minute", 0).set("second", 0).set("millisecond", 0).time)$

Bin mir nicht ganz sicher, ob die Verkettung so direkt funktioniert. :smileyblush:

Gruß

Stefan

0 Kudos

Hallo Yvonne,

konnten die Antworten von Stefan und Thorsten Deine Frage lösen oder benötigst Du noch weitere Antworten?

Sollte Deine Fragen beantwortet sein, wäre es nett, wenn Du die Antwort, die Dir weitergeholfen hat, als "richtige Antwort" markierst.

Viele Grüße

Michaela

0 Kudos

Je nach Anwendungsfall muss man auch daran denken, dass Timestamp UTC verwendet, während Java Date in FS die Timezone des Servers (oder des Java-Clients?) verwendet. Zumindest im Zusammenhang mit FS-Inetgarion kann das Probleme geben.

0 Kudos