2017-05-03 160 views
-1

如何轉換日期至POSIX時間?Freemarker:從日期轉換爲POSIX時間

日期格式不重要(「2016-02-12」,「2017年5月3日7:45:00」以及其他)。

ps。我需要得到過去的一天,所以我決定將其轉換爲POSIX和86400之間。減去

回答

0

如果你有值作爲String(不是java.util.Date),首先你需要將其轉換爲Date類型或值日期時間(基本上爲java.util.Date)。分別完成myString?datemyString?datetime,並且date_formatdatetime_format FreeMarker配置設置必須與myString中使用的格式匹配。或者,您可以指定臨時格式,例如myString?datetime('MMM d, yyyy h:mm:ss a')。有關日期/時間/日期時間格式字符串的更多信息,請參閱http://freemarker.org/docs/ref_directive_setting.html#topic.dateTimeFormatSettings。此外,由於示例字符串中沒有時區信息,因此必須確保將time_zone配置設置設置爲應該解釋字符串的時區。

現在您已經有了日期或日期時間值,可以將它自UNIX時代以來被轉換爲毫秒秒作爲myDateOrDateTime?long。儘管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

對,對於普通日期它可以工作,但不適用於.now – Simpson

+0

對於'.now',它更容易,因爲它已經是「日期時間」,而不是字符串:'(.now?long/1000) – ddekany