2017-05-03 4 views
-1

日付からPOSIX時間に変換する方法ですか?Freemarker:日付からPOSIX時間に変換する

日付の形式は重要ではありません(「2016-02-12」、「2017年5月3日7:45:00 PM」など)。

ps。私は過去の日にする必要があるので、私はそれをposixに変換して86400を引くことにしました。

答えて

0

Stringjava.util.Dateではない)の値を持っている場合は、まずそれを日付型の値に変換するか、日時(基本的にjava.util.Dateまで)。これはそれぞれmyString?dateまたはmyString?datetimeとして行われ、date_formatまたはdatetime_format FreeMarkerの設定は、myStringで使用されている形式と一致する必要があります。あるいは、形式ad-hocを指定することもできます(例:myString?datetime('MMM d, yyyy h:mm:ss a'))。日付/時刻/日時書式文字列の詳細については、http://freemarker.org/docs/ref_directive_setting.html#topic.dateTimeFormatSettingsを参照してください。また、サンプル文字列にタイムゾーン情報がないため、time_zone構成設定が文字列を解釈するタイムゾーンに設定されていることを確認する必要があります。

日付または日時の値があるので、というUNIXエポックからミリ秒秒に変換できます。 POSIXは秒を使用するので、(millisSinceEpoch/1000)?floorが必要です。

したがって、できるだけ長い表現はmyString?datetime('MMM d, yyyy h:mm:ss a')?long/1000)?floorのようですが、確かにFreeMarkerを#functionにしたいと考えています。

FreeMarkerはデフォルトで人間の数字を表示するので、1,493,865,900のようなものが出力されることに注意してください。これを防ぐには、式の最後に?cを適用します。

+0

大丈夫ですが、普通の日付では動作しません。 – Simpson

+0

'.now'の場合、文字列ではなく、すでに"日時 "であるため、さらに簡単です:'(.now?long/1000)?floor' – ddekany

関連する問題