hcdatetimestruct.java
来自「一个简单的visio程序。」· Java 代码 · 共 189 行
JAVA
189 行
package HPCore.stdfunc;
import HPCore.Exception.*;
public class HCDateTimeStruct
{
public int dt_year;
public int dt_month;
public int dt_season;
public int dt_mday; /* the day of a month */
public int dt_yday; /* the day of a year */
public int dt_week; /* the day of week*/
public int dt_wweek; /* the week of a year */
public int dt_hour;
public int dt_minute;
public int dt_second;
public HCDateTimeStruct(){ }
public void DT_DblToStruc(double dtvaldb) throws HpException
{
int i;
double time;
long data;
if( dtvaldb>2958465.99998843 )
throw new HpException( 13,"Type mismatch");
time = dtvaldb - (long)dtvaldb;
if( time>0 )
data = (long)(dtvaldb-time);
else if(time<-0.5 )
data = (long)(dtvaldb+time+1);
else
data = (long)(dtvaldb + time);
time = (time>=0) ? time : -time;
dt_year=1899;
dt_month=12;
dt_mday=30;
dt_yday=0;
dt_wweek=1;
if(dtvaldb >= 0)
{
/* get year */
while(data>366)
{
dt_year++;
if((dt_year%4==0 && dt_year%100!=0) ||(dt_year%400 == 0))
data -= 366;
else
data -= 365;
}
/* get month */
while(data > Month_Day(dt_year,dt_month))
{
data -= Month_Day(dt_year,dt_month);
dt_month++;
if(dt_month>12)
{
dt_month=1;
dt_year++;
}
}
/* get mday */
dt_mday += data;
while(dt_mday > Month_Day(dt_year,dt_month))
{
dt_mday -= Month_Day(dt_year,dt_month);
dt_month++;
if(dt_month > 12)
{
dt_month = 1;
dt_year++;
}
}
}
else
{
/* get year */
while(data<=-366)
{
if(dt_year%4==0 && dt_year%100!=0 || dt_year%400 == 0)
data += 366;
else
data += 365;
dt_year--;
}
/* get month */
while(-data >= Month_Day(dt_year,dt_month))
{
if(dt_month==12)
data += 30;
else
data += Month_Day(dt_year,dt_month);
dt_month--;
if(dt_month<1)
{
dt_month=12;
dt_year--;
}
dt_mday = Month_Day(dt_year,dt_month);
}
/* get mday */
dt_mday += data;
if(dt_mday <= 0) /*Month_Day(dt_year,dt_month))*/
{
dt_month--;
dt_mday += Month_Day(dt_year,dt_month);
if(dt_month < 1)
{
dt_month = 12;
dt_year--;
}
}
}
/* get season */
if(dt_month>0 && dt_month<=3)
dt_season=1;
if(dt_month>3 && dt_month<=6)
dt_season=2;
if(dt_month>6 && dt_month<=9)
dt_season=3;
if(dt_month>9 && dt_month<=12)
dt_season=4;
/* get yday */
i=1;
while(i<dt_month)
{
dt_yday += Month_Day(dt_year,i);
i++;
}
dt_yday += dt_mday;
/* get week */
dt_week = (int)( dtvaldb % 7 );
if(dt_week <= 0)
dt_week=7+dt_week;
/* get wweek */
if ( (dt_week == 7) && (dt_yday % 7 == 0))
dt_wweek+=dt_yday/7-1;
else
dt_wweek += dt_yday / 7;
if(dt_week < dt_yday % 7)
dt_wweek++;
/* get hour */
dt_hour = (int)(time * 24+0.00013);
/* get minute */
dt_minute = (int)( (time * 24 - dt_hour) * 60 +0.001); /* '0.00001'*/
/* get second */
dt_second = (int)( ( (time * 24 - dt_hour) * 60 - dt_minute ) * 60 +0.5);
}
public int Month_Day(int y,int m)
{
int d=0;
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
d = 31;
break;
case 2:
if ( (y%4 == 0 && y%100 != 0) || (y%400 == 0) )
d = 29;
else
d = 28;
break;
case 4:
case 6:
case 9:
case 11:
d = 30;
break;
}
return d;
} /* End of Month_Day Function */
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?