[英]Possibility to override DateFormat.getDateTimeInstance()?
[英]Using DateFormat.getDateTimeInstance().format(date);
在運行一些測試時,我遇到了以下問題。 使用時:
private String printStandardDate(Date date) {
return DateFormat.getDateTimeInstance(
DateFormat.SHORT, DateFormat.SHORT).format(date);
}
我發現這會產生不同的Date格式,具體取決於運行測試的位置。 所以在windows / eclipse本地我得到了一個結果:04/02/12 18:18但是在美國的Linux機器上我得到了2/4/12 6:18 PM
這會導致我的測試/構建失敗:
預期:<[04/02/12 18:18]>但是:<[2/4/12 6:18 PM]>
有誰能解釋這種行為?
這並不奇怪,這正是它應該如何工作的。
DateFormat.getDateTimeInstance
的API文檔說:
獲取具有默認語言環境的給定日期和時間格式樣式的日期/時間格式化程序。
Windows系統上的默認語言環境與美國的Linux機箱不同。
如果要精確控制日期和時間格式,請使用SimpleDateFormat
並SimpleDateFormat
指定格式。 例如:
private String printStandardDate(Date date) {
return new SimpleDateFormat("dd/MM/yy HH:mm").format(date);
}
更好的方法是重用SimpleDateFormat
對象,但要注意它不是線程安全的(如果同時從多個線程調用該方法,如果這些線程使用相同的SimpleDateFormat
對象,事情就會搞砸) 。
private static final DateFormat DATE_FORMAT =
new SimpleDateFormat("dd/MM/yy HH:mm");
private String printStandardDate(Date date) {
return DATE_FORMAT.format(date);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.