今天(2008-2-29)用下面这段java函数读取日期后,所有读出来的日期都往后延后一天,是怎么回事?非常急

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:16:20
非常紧急。

若回答满意,则再加100.谢谢

函数如下:
public static Date excelDateNumber2JavaDate(int datenumber) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis((new Date(0)).getTime());
int i = Calendar.DAY_OF_MONTH;
cal.set(Calendar.DAY_OF_MONTH,datenumber);
cal.set(cal.get(GregorianCalendar.YEAR)-70
,cal.get(GregorianCalendar.MONTH)
,cal.get(GregorianCalendar.DATE)
,cal.get(GregorianCalendar.HOUR)
,cal.get(GregorianCalendar.MINUTE)
,cal.get(GregorianCalendar.SECOND)
);
return cal.getTime();
}
当datenumber=39506(表示2008-02-28),返回的是2008-02-28
当datenumber=39507(表示2008-02-29),返回的是2008-03-01
当datenumber=39508(表示2008-03-01),返回的是2008-03-02
在线等。
最好能直接给出代码。

闰年。。。。

参考代码:

public static Date excelDateNumber2JavaDate(int datenumber) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTimeInMillis((new Date(0)).getTime());
int i = Calendar.DAY_OF_MONTH;
cal.set(Calendar.DAY_OF_MONTH,datenumber);
cal.set(cal.get(GregorianCalendar.YEAR)-70
,cal.get(GregorianCalendar.MONTH)
,cal.get(GregorianCalendar.DATE)
,cal.get(GregorianCalendar.HOUR)
,cal.get(GregorianCalendar.MINUTE)
,cal.get(GregorianCalendar.SECOND)
// 加入
if ( cal.isLeapYear(cal.get(Calendar.YEAR) ) == true && cal.get( Calendar.MONTH)>1 )
{
cal.add(Calendar.DAY_OF_MONTH,-1);
}
//
);
return cal.getTime();
}

没考虑闰年情况

因为今年的2月多一天所以程序没有办法处理了?

闰年 ,JAVA中没有考虑闰年,所以~~~~

import java.util.Calendar;

public class tian {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Au