我有一个问题,我的 Freemarker 模板在不同的机器上生成不同的日期格式。
我的 Freemarker 宏如下所示:
<#macro renderTextEntry textEntry>
<div id="text_entry_${textEntry.id}" class="text_entry">
<span id="text_entry_${textEntry.id}_date" class="text_entry_date">${textEntry.time?datetime}</span>:
<div id="text_entry_${textEntry.id}_content" class="text_entry_content"><#noescape>${textEntry.text}</#noescape></div>
<button class="edit_text_entry">Edit</button>
<a class="delete_text_entry" href="/delete-text-entry?id=${textEntry.id}"><img
src="images/delete.png" alt="delete text entry"/></a>
</div>
</#macro>
我对结果进行了单元测试,预期的结果是:
<div id="text_entry_5" class="text_entry">
<span id="text_entry_5_date" class="text_entry_date">Jan 2, 1970 11:17:36 AM</span>:
<div id="text_entry_5_content" class="text_entry_content">some text</div>
<button class="edit_text_entry">Edit</button>
<a class="delete_text_entry" href="/delete-text-entry?id=5">
<img src="images/delete.png" alt="delete text entry"/>
</a>
</div>
此测试通过一台机器。另一方面,它失败了。唯一的区别是日期输出为
02-Jan-1970 11:17:36
TextEntry.getDate() 返回一个 java.util.Date 对象。
两台机器都是运行 OSX 10.7.5 和 Java 1.7.0_10-b18 的 MacbookPro。我不知道我设置的任何影响默认 DateFormat 的环境变量 - 只是运行
System.out.println(new Date());
在两台机器上产生相同的输出。我不知道这里发生了什么 - 任何帮助将不胜感激!
注意:我通过明确声明我想要的日期格式解决了我的问题 - 相关的 Freemarker 片段现在是
${textEntry.time?string("MMM d, yyyy HH:mm:ss a")}
但是,很高兴了解这里发生了什么!