SimpleDateFormat格式2'相同'日期不同 [英] SimpleDateFormat formats 2 'same' dates differently

查看:130
本文介绍了SimpleDateFormat格式2'相同'日期不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在这一个让我很困惑...

Now this one baffles me a lot...

考虑以下2个日期

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

当我把这两个日期都放到SimpleDateFormat中时,我得到了两个不同的结果...

When i put both of these dates into SimpleDateFormat i get 2 different results...

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); 

OUTPUT:

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

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

Now if someone could shed some light on what is happening here I would really appreciate it.

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

PS. I tried creating separate formatter for the other date but still same effect.

编辑:

Ok以下代码是css导出文件的一部分。

Ok so below code is part of css export file.

// 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 %><% } %>


推荐答案

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

Your dates are expressed in the CET timezone. Is that your default timezone? You can specify the target timezone in your date formatter:

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

这篇关于SimpleDateFormat格式2'相同'日期不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆