2014-06-15 294 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日期。您可以将其调整为您所在地区使用的语言环境和时区。