Freemarker模型将时间戳转换为以毫秒为单位

And*_*eas 5 java freemarker fmpp

我有一个csv文件,我想用fmpp(freemarker)进行转换.第一列是一个长值(自1970年1月1日以来的毫秒),我想将其转换为日期并将其格式化为datetime.

src格式:

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
Run Code Online (Sandbox Code Playgroud)

理想的目标格式:

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
Run Code Online (Sandbox Code Playgroud)

我的(运行)模板:

<#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>
Run Code Online (Sandbox Code Playgroud)

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

有任何想法吗?

dde*_*any 24

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

Mayble你必须在FMPP中升级FreeMarker.为此,只需更换<FMPP_HOME>/lib/freemarker.jar最新版本.

  • 感谢名单!我必须在文档中监督这一点.其他人的暗示.您必须先将String转换为数字,然后转换为如下的日期时间:$ {(row [h])?number?number_to_datetime}.输出的日期时间格式可以设置为:<#setting datetime_format ="yyyy-MM-dd hh:mm:ss"> (2认同)

小智 5

在我的情况下,我使用以下代码:

$ {(timeStamp)?number_to_date?string(“ yyyy.MM.dd”)}

并替换number_to_datenumber_to_datetimenumber_to_time;

你可以替换yyyy.MM.dd使用YYYY-MM-dd HH:mm:ss,因为你需要。

检查此:http : //freemarker.org/docs/ref_builtins_expert.html#ref_builtin_numToDate