如何转换日期至POSIX时间?Freemarker:从日期转换为POSIX时间
日期格式不重要(“2016-02-12”,“2017年5月3日7:45:00”以及其他)。
ps。我需要得到过去的一天,所以我决定将其转换为POSIX和86400之间。减去
如何转换日期至POSIX时间?Freemarker:从日期转换为POSIX时间
日期格式不重要(“2016-02-12”,“2017年5月3日7:45:00”以及其他)。
ps。我需要得到过去的一天,所以我决定将其转换为POSIX和86400之间。减去
如果你有值作为String
(不是java.util.Date
),首先你需要将其转换为Date类型或值日期时间(基本上为java.util.Date
)。分别完成myString?date
或myString?datetime
,并且date_format
或datetime_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
。
对,对于普通日期它可以工作,但不适用于.now – Simpson
对于'.now',它更容易,因为它已经是“日期时间”,而不是字符串:'(.now?long/1000) – ddekany