2011-05-28 72 views
0

我正在使用GregorianCalander,并且当我试图使用下面的代码获取今天的日期时,我得到的是一个回溯到一个月的日期。我使用的代码如下。Java日期问题

 Calendar gcal = new GregorianCalendar(); 
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
     today = getTime(gcal); 
     //date = dateFormat.format(calendar.getTime()); 
     System.out.println("Today: " + today); 

请帮我解决这个问题。

输出是:

今天:星期四04月28日00:00:00 NZST 2011

编辑

private Date getTime(Calendar gcal) { 
    try { 
     SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
     String day = form_helper.round(gcal.get(GregorianCalendar.DAY_OF_MONTH)); 
     String month = form_helper.round(gcal.get(GregorianCalendar.MONTH)); 
     String year = form_helper.round(gcal.get(GregorianCalendar.YEAR)); 
     String date = day + "/" + month + "/" + year; 
     System.out.println(sdf.parse(date)); 
     return sdf.parse(date); 
    } catch (ParseException ex) { 
     Logger.getLogger(timesheet_utility.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    return null; 
} 
+0

你的getTime方法如何? – YeJiabin 2011-05-28 11:55:34

+0

@YeJiabin:查看我的编辑 – Deepak 2011-05-28 11:57:11

+0

getTime的代码是什么? – haknick 2011-05-28 11:57:35

回答

5

我觉得个月的内部编号从0开始,不是1.所以,你可能需要在某处添加+1。
编辑:你表现出一些更多的代码后:所需要的变化是

String month = form_helper.round(gcal.get(GregorianCalendar.MONTH) + 1); 
+0

我把它解决了+1 ..感谢那... – Deepak 2011-05-28 12:23:25

4

什么是getTime()方法呢?请记住,在Java中,该月的常量从0开始,而不是1,因此Calendar.JANUARY == 0

编辑

既然你发布的代码为getTime(),我认为这就是问题所在:

gcal.get(GregorianCalendar.MONTH)返回月份值的Java内部存储,即0索引月份值这么“May”的值实际上是整数“4”。

当值“4”被放回日期解析器时,“April”结果,因为解析器将日期解释为人类。因此,您只需将此值加1即可确保正确解析。

+0

谢谢你,我解决了通过添加+1 – Deepak 2011-05-28 12:23:50

2

这里是我的尝试:

package forums; 
import java.util.Date; 
import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Deepak 
{ 
    public static void main(String[] args) { 
    try { 
     (new Deepak()).run(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

    public void run() { 
    Calendar calendar = new GregorianCalendar(); 
    Date today = calendar.getTime(); 
    System.out.println("Today: " + today); 
    } 

} 

和输出的预期:

Today: Sat May 28 22:00:52 EST 2011 
3

如果你想有一个Date对象,表示上午12:00(或00:00)今天,为什么不只是这样做:

private Date getTime() { 
    Calendar gcal = new GregorianCalendar(); 
    gcal.set(Calendar.HOUR_OF_DAY, 0); 
    gcal.set(Calendar.MINUTE, 0); 
    gcal.set(Calendar.SECOND, 0); 
    gcal.set(Calender.MILLISECOND, 0); 
    return gcal.getTime(); 
}