SimpleDateFormat以不同方式格式化2个“相同”日期

时间:2015-12-11 12:02:41

标签: java date csv

现在这个让我感到困惑......

考虑以下2个日期

Fri Dec 11 00:00:00 CET 2015
Fri Dec 11 23:59:59 CET 2015

当我将这两个日期都放入SimpleDateFormat时,我得到2个不同的结果......

Date dateFrom = Fri Dec 11 00:00:00 CET 2015
Date dateTo = Fri Dec 11 23:59:59 CET 2015

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

String formatedFromDate = formatter.format(dateFrom);
String formatedToDate = formatter.format(dateTo);

System.out.println(formatedFromDate); 
System.out.println(formatedToDate); 

输出:

1st:  11/12/2015
2nd:  11-12-2015

现在,如果有人能够对这里发生的事情有所了解,我将非常感激。

PS。我尝试为其他日期创建单独的格式化程序,但仍然具有相同的效果。

编辑:

好的,所以下面的代码是css导出文件的一部分。

// os.getStart() returns = Fri Dec 11 00:00:00 CET 2015
// os.getEnd() returns = Fri Dec 11 23:59:59 CET 2015
// 
// os.getStart() & os.getEnd() looks like

Date start;
Date end;
// SEPARATE PACKAGE
public Date getStart() {
        if(start==null) {
            log.warning("Null start!");
            start=new Date();
        }
        return start;
}
public Date getEnd() {
    if(end==null) {
        log.warning("Null end!");
        end=new Date();
    }
    return end;
}
// setDates are called when date from database is taken - so no rocket science here

// CSV EXPORT FILE
Date dateFrom = os.getStart();
Date dateTo = os.getEnd();

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

String formatedFromDate = formatter.format(dateFrom);
String formatedToDate = formatter.format(dateTo);

if(names==null) {
       return;
}
Iterator it;%><%= title %>,<%= messages.getString("calls") %>,<%= messages.getString("answered") %><%= (hasTimes) ? ","+messages.getString("h_time") : "" %>,From Date,To Date<%
it=breakdown.keySet().iterator();
while(it.hasNext()) {
        Integer idInt=(Integer)it.next();
        String key=(String)names.get(idInt);
        OrderlyStats.Breakdown value=(OrderlyStats.Breakdown)breakdown.get(idInt);
%>
<%= dateFrom %> //<----Fri Dec 11 00:00:00 CET 2015
<%= dateTo %> //<----Fri Dec 11 23:59:59 CET 2015
<%= ("Queue".equals(type)) ? displayNames.get(key) : key %>,<%= value.calls %>,<%= value.answered %><%= (hasTimes) ? ","+Helper.formatDouble(value.time,1) : "" %>, <%= formatedToDate %>,<%= formatedToDate %><% } %>

1 个答案:

答案 0 :(得分:0)

您的日期以CET时区表示。这是你的默认时区吗? 您可以在日期格式化程序中指定目标时区:

formatter.setTimeZone(TimeZone.getTimeZone("CET"));