udtdatetime.java
来自「一个简单的visio程序。」· Java 代码 · 共 838 行 · 第 1/2 页
JAVA
838 行
{ // maybe year is 2000
if( str0_int==0 )
{
dt_Arr[2] = 2000;
if( str1_int<=0 || str1_int>12 ) //is not month
return null;
dt_Arr[0] = str1_int;
if( str2_int > tm.Month_Day(dt_Arr[2], dt_Arr[0] ) )
return null;
dt_Arr[1] = str2_int;
}
else
return null;
}
else // the format is mm/dd/yy
{
dt_Arr[2] = str2_int +
(str2_int<100 ? (str2_int<30 ? 2000 : 1900) : 0 );
dt_Arr[0] = str0_int ;
if( str1_int > tm.Month_Day(dt_Arr[2], dt_Arr[0] ) )
return null;
dt_Arr[1] = str1_int;
}
}
try
{
if( dt_str[3].compareTo("")!=0 )
{
dt_str[3] = dt_str[3].replace('.', ':');
int col = dt_str[3].indexOf(':');
if( col==-1 )
{
int amorpm ;
boolean ispm=false;
amorpm = dt_str[3].lastIndexOf("am");
if( amorpm==-1 )
{
ispm = true;
amorpm = dt_str[3].lastIndexOf("pm");
}
if( amorpm==dt_str[3].length()-2 )
{
dt_Arr[3]=Integer.parseInt( dt_str[3].substring(0,amorpm).trim() );
if( dt_Arr[3] > 23 )
return null;
if( ispm==true && dt_Arr[3]<12 )
dt_Arr[3] = dt_Arr[3] +12; // redjust the hour
}
else
return null;
}
else
{
dt_Arr[3] = Integer.parseInt( dt_str[3].substring(0,col).trim() ); //is hour
if( dt_Arr[3] > 23 )
return null;
dt_str[3] = dt_str[3].substring(col+1 ).trim();
if( dt_str[3].compareTo("")==0 ) // only hour
return null;
col = dt_str[3].indexOf(':');
if( col!=-1 )
{
dt_Arr[4] = Integer.parseInt( dt_str[3].substring(0,col).trim() );
if( dt_Arr[4]>59 )
return null;
dt_str[3] = dt_str[3].substring(col+1).trim();
if( dt_str[3].indexOf(':')!=-1 )
return null;
int dot = dt_str[3].lastIndexOf("am");
if( dot ==-1 ) // if more than one string the next is error
{
dot = dt_str[3].lastIndexOf("pm");
if( dot==-1 )
{
dt_Arr[5] = Integer.parseInt( dt_str[3]);
if( dt_Arr[5]>59 )
return null;
}
else
{
dt_str[3] = dt_str[3].substring(0, dot).trim();
dt_Arr[5] = Integer.parseInt( dt_str[3] ); // get second
if( dt_Arr[5]>59 )
return null;
if( dt_Arr[3]<12 )
dt_Arr[3] = dt_Arr[3] +12; // redjust the hour
}
} //end of am=-1
else
{
dt_str[3] = dt_str[3].substring(0, dot).trim();
dt_Arr[5] = Integer.parseInt( dt_str[3] );
if( dt_Arr[5]>59 )
return null;
}
} // only hour and minute
else
{
int dot = dt_str[3].lastIndexOf("am");
if( dot ==-1 ) // if more than one string the next is error
{
dot = dt_str[3].lastIndexOf("pm");
if( dot==-1 )
{
dt_Arr[4] = Integer.parseInt( dt_str[3].trim());
if( dt_Arr[4]>59 )
return null;
}
else
{
dt_str[3] = dt_str[3].substring(0, dot).trim();
dt_Arr[4] = Integer.parseInt( dt_str[3] ); // get minute
if( dt_Arr[4]>59 )
return null;
if( dt_Arr[3]<12 )
dt_Arr[3] = dt_Arr[3] +12; // redjust the hour
}
} //end of am=-1
else
{
dt_str[3] = dt_str[3].substring(0, dot).trim();
dt_Arr[4] = Integer.parseInt( dt_str[3] );
if( dt_Arr[4]>59 )
return null;
}
}
}
}
}catch ( Exception err)
{
return null;
}
return dt_Arr;
}
public static String[] dtpart(String s)
{
char stdard[] = {'/', ',','-', ' ' ,'.', ':'};
char std[]={'/',',','-'}; // only date format
String[] dt_str = {"","","","" };
String date="",istime="",isdate="";
int label=0, temp=0,i=0,j=0,k=0,sd=0 ,lab=0;
char ch='N';
s = s.trim();
try
{
while( lab<s.length() )
{
for( j=0;(j<6) && (s.charAt(lab)!=stdard[j]) ;j++)
;
if( j!=6 )
{
ch = stdard[j];
if( ch==' ')
{
while( s.charAt(lab)==' ' && label<=2 )
lab++;
for(i=lab; i<s.length() && label<=2 ; i++)
{
if( s.charAt(i)=='.' ||
s.charAt(i)==':' ||
(s.charAt(i)=='a' && s.indexOf("am")==i ) ||
(s.charAt(i)=='a' && s.indexOf("am")==i ) )
{
i--;
while(s.charAt(i)==' ' )
i--;
dt_str[3] = s.substring(i);
break;
}
for(k=0; (k<3) && ( s.charAt(i)!=std[k] );k++)
;
if(k!=3 && s.charAt(i)==std[k] )
{
i++;
while(i<s.length() && s.charAt(i)==' ' )
i++;
break;
}
else if(k==3 && s.charAt(--i)==' ' )
{
i++;
break;
}
}
lab = i;
if( dt_str[3].compareTo("")!=0 )
{
label = 3;
break;
}
if(lab==s.length() )
{
lab--;
dt_str[label] = label==0 ? s.trim()
: s.substring(temp).trim();
// rid the first char or the end char among the std[]
for( sd=0; sd<3 && dt_str[label].charAt(dt_str[label].length()-1 )!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(0, (dt_str[label].length()-1) ).trim();
else
{
for( sd=0; sd<3 && dt_str[label].charAt(0)!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(1).trim();
}
temp = lab;
label++;
break;
}
else
{
dt_str[label] = label==0 ? s.substring(0, lab).trim()
: s.substring(temp,lab).trim();
}
// rid the first char or the end char among the std[]
for( sd=0; sd<3 && dt_str[label].charAt(dt_str[label].length()-1 )!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(0, (dt_str[label].length()-1) ).trim();
else
{
for( sd=0; sd<3 && dt_str[label].charAt(0)!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(1).trim();
}
temp = lab;
label++;
if( label==2)
lab++;
else if(label==3 )
{
dt_str[label] = s.substring(temp);
break;
}
continue;
}
else if( ch=='.' || ch==':')
{
int a=lab-1;
boolean isspace=false,isdigit=false;
while( --a>=0 )
{
if(s.charAt(a)=='/' || s.charAt(a)=='-' || s.charAt(a)==',' )
{
if( isdigit==false || isspace==false)
return null;
}
if(s.charAt(a)==' ' )
isspace = true;
else if( s.charAt(a)>='0' && s.charAt(a)<='9' )
isdigit = true;
}
label = 3;
dt_str[3] = s.substring(temp);
break;
}
else if( label==2 && ch!=' ')
{
return null;
}
else
{
lab++;
while(lab<s.length() && s.charAt(lab)==' ' )
lab++;
dt_str[label] = label==0 ? s.substring(0, lab).trim()
: s.substring(temp,lab).trim();
// rid the first char or the end char among the std[]
//int sd;
for( sd=0; sd<3 && dt_str[label].charAt(dt_str[label].length()-1 )!=std[sd]; sd++)
;
if( sd!=3)
{
dt_str[label] = dt_str[label].substring(0, (dt_str[label].length()-1) ).trim();
}
else
{
for( sd=0; sd<3 && dt_str[label].charAt(0)!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(1).trim();
}
label++;
temp = lab;
}
if( label==3 )
{
dt_str[label] = s.substring(lab);
break;
}
}
lab++;
}
if( label==0 && s.indexOf("am")!=-1 || s.indexOf("pm")!=-1 )
{
label = 3;
dt_str[3] = s.substring(temp);
}
if( label<3 && lab!=temp )
{
dt_str[label] = s.substring(temp);
for( sd=0; sd<3 && dt_str[label].charAt(0)!=std[sd]; sd++)
;
if( sd!=3)
dt_str[label] = dt_str[label].substring(1).trim();
else
dt_str[label] = dt_str[label].trim();
}
if( dt_str[3].compareTo("")!=0 )
{
for( k=0; k<dt_str[3].length(); k++)
{
for( sd=0; sd<3 && dt_str[label].charAt(0)!=std[sd]; sd++)
;
if( sd!=3 )
return null;
}
int am_pm = dt_str[3].lastIndexOf("am");
if( am_pm==-1 )
am_pm = dt_str[3].lastIndexOf("pm");
if( am_pm!=-1 )
{
istime = dt_str[3].substring(0,am_pm );
if( istime.length() + 2 != dt_str[3].length() )
{
istime =" " + dt_str[3].substring(0,am_pm+2 );
isdate = dt_str[3].substring(am_pm+2 );
date = isdate+istime;
dt_str = dtpart(date);
}
}
else
{
int comm = dt_str[3].lastIndexOf(':');
int dot = dt_str[3].lastIndexOf('.');
if( comm> dot)
{
istime = dt_str[3].substring(0,comm+1);
isdate = dt_str[3].substring(comm+1);
}
else
{
istime = dt_str[3].substring(0,dot+1 );
isdate = dt_str[3].substring(dot+1);
}
isdate = isdate.trim();
int space = isdate.indexOf(' ');
if( space!=-1 )
{
istime = istime + isdate.substring(0,space );
isdate = isdate.substring(space);
date = isdate + " " + istime;
dt_str = dtpart(date);
}
}
}
}catch( Exception err)
{
return null;
}
return dt_str;
}
public static double StrToDbl(int[] dtstr) throws HpException
{
double d=0.0000;
UdtDatetime Datetime = new UdtDatetime();
GGRESULT ddate = Datetime.dtcommon(dtstr);
if( ddate.valued>=0 )
d = ddate.valued + ddate.valuet;
else
d = ddate.valued - ddate.valuet;
return d;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?