java - Freemarker 模型将时间戳以毫秒为单位转换为日期

标签 java freemarker fmpp

我有一个 csv 文件,我想用 fmpp (freemarker) 转换它。第一列是一个长值(自 1.1.1970 以来的毫秒数),我想将其转换为日期并将其格式化为日期时间。

源码格式:

timeStamp,elapsed,label,responseCode,threadName,dataType,success,bytes,URL,Latency
1319115474244,40142,Login,200,Login 1-2,text,true,862184,http://localhost:8080/xxx,5378

理想的目标格式:

timeStamp;elapsed;label;responseCode;threadName;dataType;success;bytes;URL;Latency
20.12.2011 13:45;40142;Login;200;Login 1-2;text;true;862184;http://localhost:8080/xxx;5378

我的(正在运行的)模板:

<#list csv.headers as h>${h}<#if h_has_next>;</#if></#list>
<#list csv as row>
<#list csv.headers as h><#if h_index == 0>Do the date magic<#else>${(row[h]!"N/A")?string}</#if>$<#if h_has_next>;</#if></#list>
</#list>

对于第 0 列,我想进行转换。我不想写一个包含日期的新模型。我的问题是,这是否可以在不修改 freemarker 或 fmpp 的情况下在模板中完成。

有什么想法吗?

最佳答案

FreeMarker 2.3.17 引入了 ?number_to_date , ?number_to_time?number_to_datetime为了那个原因。请参阅:http://freemarker.org/docs/ref_builtins_expert.html#ref_builtin_numToDate

您还需要设置日期/时间格式和时区;见http://fmpp.sourceforge.net/settings.html#sect17

也许你必须在 FMPP 中升级 FreeMarker。为此,只需替换 <FMPP_HOME>/lib/freemarker.jar使用最新版本。

关于java - Freemarker 模型将时间戳以毫秒为单位转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7846105/

相关文章:

python - 有谁知道 FMPP 的 Python 等价物?

java - 使用多个 IO 流通过 Java 套接字传输文件

java - 如何使用 Hibernate JPA 2 元模型生成器?

java - 如何在android中获取包名?

java - 更改 liferay 门户中的 Logo

gradle - 排除使用fmpp处理文件夹(但将其复制)

java - 带缓存的 ZoneOffset 计算

java - 未找到 Freemarker 模板异常

Struts2.3.15 freemarker集成

gradle - 将FMPP与Gradle一起使用