如何从日期转换为POSIX时间?
日期格式不重要(“2016-02-12”,“2017年5月3日下午7:45:00”和其他任何内容。)
PS。我需要过去一天,所以我决定将其转换为posix并减去86400。
答案 0 :(得分:0)
如果您的值为String
(而不是java.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纪元作为myDateOrDateTime?long
转换为 milli 秒。虽然POSIX使用秒数,但您需要(millisSinceEpoch / 1000)?floor
。
所以尽可能长的表达式就像myString?datetime('MMM d, yyyy h:mm:ss a')?long / 1000)?floor
,但你当然希望从中创建一个FreeMarker #function
。
另请注意,FreeMarker默认为人类打印数字,因此可能会打印1,493,865,900
之类的内容。为防止这种情况,请在表达式的末尾应用?c
。
答案 1 :(得分:0)
此功能自2011年以来就已内置。
?long
现在可用于日期,日期时间或时间值,并返回 自纪元以来的毫秒数(如java.util.Date.getTime()
)。