今天(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