我有一個問題,我的Freemarker模板在不同的機器上產生不同的日期格式。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的MacbookPros。我不知道我已設置的任何環境變量影響默認的日期格式的 - 只需運行
System.out.println(new Date());
產生在兩臺機器上相同的輸出。我不知道這裏發生了什麼 - 任何幫助將不勝感激!
注:我已經通過顯式聲明的日期格式我想解決我的問題 - 現在有關Freemarker的片段是
${textEntry.time?string("MMM d, yyyy HH:mm:ss a")}
但是,它仍然將是很好的瞭解是怎麼回事!
這是全部在java中,所以它不是瀏覽器 - 但是,在一臺機器上,Locale.getDefault()是en_GB,另一個是en_US。在系統偏好設置中將我的首選語言更改爲英式英語修復了它仍然奇怪的是,打印新的Date()並沒有什麼不同。 –
我很喜歡這個答案,因爲它讓我開始了,但接受ddekany的,因爲它更詳細。 –