Java日期问题
我使用的是GregorianCalander,当我尝试使用以下代码获取今天的日期时,我得到的日期可以追溯到一个月。我使用的代码如下Java日期问题,java,date,Java,Date,我使用的是GregorianCalander,当我尝试使用以下代码获取今天的日期时,我得到的日期可以追溯到一个月。我使用的代码如下 Calendar gcal = new GregorianCalendar(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); today = getTime(gcal); //date = dateFormat.format(ca
Calendar gcal = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
today = getTime(gcal);
//date = dateFormat.format(calendar.getTime());
System.out.println("Today: " + today);
请帮我解决这个问题
输出为:
今天:2011年4月28日星期四00:00:00新西兰时间
编辑
我认为月份的内部编号从0开始,而不是1。因此,您可能需要在某处添加+1。
编辑:显示更多代码后:所需的更改是
String month = form_helper.round(gcal.get(GregorianCalendar.MONTH) + 1);
getTime()
方法做什么?请记住,在Java中,月份的常量从0开始,而不是从1开始,所以
编辑
既然您发布了getTime()
的代码,我想这就是问题所在:
gcal.get(gregoriacalendar.MONTH)
返回Java内部存储的月份值,即0索引的月份值,因此“May”的值实际上是整数“4”
当值“4”被放回日期解析器时,结果是“April”,因为解析器会像人一样解释日期。因此,您只需将1添加到此值,以确保正确进行解析。以下是我的尝试:
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
如果您想要表示今天12:00AM(或00:00)的
Date
对象,为什么不执行以下操作:
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();
}
@叶家斌:检查我的编辑getTime的代码是什么?从0开始的月份索引是它看起来的问题吗?我不知道。。。我知道他们在东部州有点落后,但整整一个月都落后了。。。世界跆拳道联盟?你确定你电脑的日期正确吗?顺便说一句。。。张贴您的实际代码<代码>今天=获取时间(gcal)代码>不会编译(至少这个月不会)。现在我只需要问一下。。。为什么你为了今天的约会要走这么复杂的路?我肯定错过了什么?
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();
}