2016-07-06 15 views
0

Ich versuche, die folgende Arbeit zu bekommen, aber ich kann der richtige Wert angezeigt werden nicht erhalten.Konvertieren von Daten Freemarker

Unter der Annahme, SHIPPING_DATE wird als String mit dem Wert = 2016.05.23 behandelt:

<#setting date_format="MM/dd/yyyy"> 
<#setting locale="en_US"> 

<#assign ship_date>${SHIPPING_DATE}</#assign> 

${ship_date?date("MM/dd/yyyy")} 

Der Ausgang ist 12/05/0190 aber ich erwarte 2016.05.23 . Wird jemand helfen, aber bitte auch erklären, was ich falsch mache?

+0

Geringfügige Korrektur: * <# assign ship_date> $ {SHIPPING_DATE} Nathan

+0

Oder eher nur '<# ​​assign ship_date = SHIPPING_DATE>', da 'SHIPPING_DATE' bereits eine Zeichenkette ist. Das wiederum macht den ganzen Einsatz überflüssig ... – ddekany

Antwort

0

Wenn Sie eine Zeichenfolge in ship_date wie 2016/05/23 haben, dann können Sie es zu einem echten Datumswert mit ship_date?date("yyyy/MM/dd") analysieren. Beachten Sie, dass es nicht wie in Ihrem Beispiel MM/dd/yyyy ist. ?date bedeutet "zum Datum konvertieren", und Sie geben an, wie die Zeichenfolge zu interpretieren ist. Dann, wenn Sie einen echten Datumswert (kein String) mit ${...} drucken, dann wird es in einem String nach der data_format Konfigurationseinstellung umgewandelt werden, so ist, dann wird MM/dd/yyyy gut sein. Es ist nicht entscheidend, wie dieser reale Datumswert erhalten wurde (wie bei string?date(format) oder direkt aus dem Datenmodell).

+0

Das hat funktioniert! Danke für Ihre Hilfe und Erklärung. Ich interpretierte die Date-Funktion falsch. Ich war mir nicht bewusst, dass ich sagte "das ist ein Date", ich dachte, ich brauche etwas extra um zu konvertieren. Das war sehr hilfreich. – Nathan

+0

Gewöhnlich, Substantive und Adjektive nach '?' Bedeuten "zu ". Wie "? Obere_Case" bedeutet "in Großbuchstaben", bedeutet "Zeichenkette" "zu Zeichenkette". Und Sie sollen die Antwort akzeptieren (fügen Sie diesen Haken hinzu). – ddekany