2014-06-15 211 views
2

我有一個日期,我試圖正確打印,但沒有任何成功。日期格式不正確

這裏是我的代碼使用

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 

    System.out.println(sdf.format(my_date)); 

其中my_date爲Date對象。問題是,我總是收到即使我已經要求這樣

dd/MM/yyyy HH:mm 

哪裏是錯誤的日期這樣

Sat Jun 06 07:00:00 CEST 2015 

的日期?

編輯

我工作的Java EE 7環境中安裝Glassfish的。我在我的MySQL數據庫中有一個像這樣的TIMESTAMP字段2014-06-18 07:00:00。我通過jsp頁面中的EL表達式獲取值並打印出來。

這是實體,時間字段

public class Route implements Serializable 
{ 
    ... 
    @Column(name = "DEPARTURE_DATE", nullable = false) 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date departure_date; 
    @Column(name = "ARRIVAL_DATE", nullable = false) 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date arrival_date; 
    ... 

我做一個查詢並獲取路線的結果列表,並通過EL表達式我打印所有領域

<c:forEach items="${routes_list}" var="route"> 
<tr> 
<td>${route.airlane}</td> 
<td>${route.aircraft_id}</td> 
<td>${route.airport_city_source.city}</td> 
<td>${route.airport_city_dest.city}</td> 
<td>${route.departure_date}</td> 
<td>${route.arrival_date}</td> 
<td>${route.travel_class}</td> 
</tr> 
</c:forEach> 
+0

對我來說工作很好...你可以分享你如何創建'my_date'。這裏是我如何創建它'Date my_date = new Date(2014,1,31);' – Mzf

+0

我已經複製了代碼,它的工作原理。我得到正確的格式。這些代碼是否在你的代碼之後,或者是否有可能在代碼之間改變sdf? – Jens

+0

[適用於我](https://ideone.com/UktBMg)。 –

回答

1

你可能打印其他日期。

我想你的代碼在這裏:

$ cat Hello.java 
import java.text.*; 
import java.util.*; 
public class Hello { 
    public static void main(String ... args) { 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
    System.out.println(sdf.format(new Date())); 
    } 
} 

,並得到:

$ java Hello 
15/06/2014 14:10 
0

你在錯誤的方式服用。無論何時格式化日期,它都不會保存日期對象本身中的任何位置的格式。

如果您只是再次打印日期對象,那麼它會使用默認的toString()實現日期對象,這是您在輸出中獲得的。

您必須在需要時再次格式化,而不僅僅是一次。

請看看我的另一篇文章herehere,可能會幫助你。

2

簡單的日期格式的語言環境感知,並能格式化,並按照格式和語言環境解析日期。爲避免日期字符串使用不同語言環境和不同時區格式化時的常見錯誤,應在格式化或分析日期字符串之前指定這些值。

Locale locale = new Locale("en_US"); 
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm", locale); 
sdf.setTimeZone(tz); 

現在,你可以不管服務器默認的語言環境和時區設置formatparse日期。您可以將其調整爲您所在地區使用的語言環境和時區。