我有约会,我正在尝试正确打印但没有任何成功。
这是我使用的代码
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm");
System.out.println(sdf.format(my_date));
其中my_date是Date对象。问题是我总是收到这样的日期
Sat Jun 06 07:00:00 CEST 2015
即使我要求这样的日期
dd/MM/yyyy HH:mm
错误在哪里?
修改
我正在安装Glassfish的Java EE 7环境。我在我的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 :(得分: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);
现在,无论服务器默认的区域设置和时区设置如何,您都可以format
和parse
个日期。您可以根据您所在地区使用的区域设置和时区进行调整。
答案 1 :(得分: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
答案 2 :(得分:0)
你是以错误的方式接受它。无论何时格式化日期,它都不会将格式保存在日期对象本身的任何位置。
如果你只是再次打印日期对象,那么它使用日期对象的默认toString()
实现,这是你输出的结果。
只要需要,您就必须再次格式化它。
答案 3 :(得分:0)
我认为这可以满足您的需求。
现在日期=新日期();
System.out.println(DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT).format(now));
以下是更多参考资料的链接。
http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/