format.java
来自「一个简单的visio程序。」· Java 代码 · 共 2,266 行 · 第 1/5 页
JAVA
2,266 行
month_str = "December"; break;
}
return month_str;
}
private static String five_t(String exp) throws HpException {
return c_Date(exp).strValue();
}
private static String def_dat(Variant exp, String for_mat) throws HpException
{
HCDateTimeStruct tm = new HCDateTimeStruct();
String str = for_mat.trim();
String sr = "";
String exps = parse_express(exp.strValue());
StringBuffer sb = new StringBuffer();
boolean tflag = false;
boolean zflag = false;
int i=0, j=0;
char c = '0';
exps = boolToStr(exps);
for (i=0; i<exps.length(); i++) {
c = exps.charAt(i);
if ( c <'0' || c > '9' && c != '.' && c != ',')
tflag = true;
else
tflag = false;
}
if (tflag == true)
return exps;
if (str.compareTo("c") == 0) {
String aft_len = null;
boolean valid = false;
i = exps.indexOf('.');
if (i != -1) {
valid = true;
aft_len = exps.substring(i+1,exps.length());
exps = exps.substring(0,i);
StringBuffer su = new StringBuffer();
su.append("0.").append(aft_len);
aft_len = su.toString();
for (j=0; j<aft_len.length(); j++) {
zflag = ((aft_len.charAt(j) == '0') && (aft_len.charAt(j) != '.'));
if(!zflag) break;
}
if (zflag == false)
sr = five_t(aft_len);
else
sr = "";
}
for (j=0; j<exps.length(); j++) {
zflag = (exps.charAt(j) == '0');
if (zflag == false) break;
}
if (zflag == false) {
String v;
v = hpdatetime.MONTH(new VString(exps)).strValue();
v = v + "/" + hpdatetime.DAY(new VString(exps)).strValue();
v = v + "/" + fmYear(exps);
sb.append(v);
}
else if (zflag && !valid) {
String ss = five_t(exps);
sb.append(ss);
}
if (!valid) return sb.toString();
sb.append(" ").append(sr);
return sb.toString();
}
else if (str.compareTo("d") == 0)
return hpdatetime.DAY(new VString(exps)).strValue();
else if (str.compareTo("dd") == 0) {
short s = hpdatetime.DAY(new VString(exps)).intValue();
String ss = s < 10 ? ("0" + s) : ("" + s);
return ss;
}
else if (str.compareTo("ddd") == 0)
return WeekDayName(hpdatetime.WEEKDAY(new VString(exps)), 0, 1).substring(0,3);
else if (str.compareTo("dddd") == 0)
return WeekDayName(hpdatetime.WEEKDAY(new VString(exps)), 0, 1);
else if (str.compareTo("ddddd") == 0) {
String v;
v = hpdatetime.MONTH(new VString(exps)).strValue();
v = v + "/" + hpdatetime.DAY(new VString(exps)).strValue();
v = v + "/" + hpdatetime.YEAR(new VString(exps)).strValue().substring(2,4);
return v;
}
else if(str.compareTo("dddddd") == 0) {
String s1;
s1 = WeekDayName(hpdatetime.WEEKDAY(new VString(exps)), 0, 1);
s1 = s1 + ", " + month_name(hpdatetime.MONTH(new VString(exps)).lngValue());
Variant ss1 = hpdatetime.DAY(new VString(exps));
s1 = s1 + " " + (ss1.intValue()<10?("0"+ss1.strValue()):(""+ss1.strValue()));
s1 = s1 + ", " + hpdatetime.YEAR(new VString(exps)).strValue();
return s1;
}
else if (str.compareTo("w") == 0) {
isW = true;
return hpdatetime.WEEKDAY(new VString(exps)).strValue();
}
else if (str.compareTo("ww") == 0) {
isWW = true;
double exp1 = 0;
try {
exp1 = strToDbl(exps);
} catch (HpException e) {;}
tm.DT_DblToStruc(exp1);
return String.valueOf(tm.dt_wweek);
}
else if (str.compareTo("m") == 0)
return hpdatetime.MONTH(new VString(exps)).strValue();
else if (str.compareTo("mm") == 0) {
short s = hpdatetime.MONTH(new VString(exps)).intValue();
String ss = s < 10 ? ("0" + s) : ("" + s);
return ss;
}
else if (str.compareTo("mmm") == 0)
return month_name(hpdatetime.MONTH(new VString(exps)).lngValue()).substring(0,3);
else if (str.compareTo("mmmm") == 0)
return month_name(hpdatetime.MONTH(new VString(exps)).lngValue());
else if (str.compareTo("q") == 0) {
double exp1 = 0;
try {
exp1 = strToDbl(exps);
} catch(HpException e) {;}
tm.DT_DblToStruc(exp1);
return String.valueOf(tm.dt_season);
}
else if (str.compareTo("y") == 0) {
double exp1 = 0;
try {
exp1 = strToDbl(exps);
} catch(HpException e) {;}
tm.DT_DblToStruc(exp1);
return String.valueOf(tm.dt_yday);
}
else if (str.compareTo("yy") == 0)
return hpdatetime.YEAR(new VString(exps)).strValue().substring(2,4);
else if (str.compareTo("yyyy") == 0)
return hpdatetime.YEAR(new VString(exps)).strValue();
else if (str.compareTo("h") == 0)
return hpdatetime.HOUR(new VString(exps)).strValue();
else if (str.compareTo("hh") == 0) {
short s = hpdatetime.HOUR(new VString(exps)).intValue();
String ss = s < 10 ? ("0" + s) : ("" + s);
return ss;
}
else if (str.compareTo("n") == 0)
return hpdatetime.MINUTE(new VString(exps)).strValue();
else if (str.compareTo("nn") == 0) {
short s = hpdatetime.MINUTE(new VString(exps)).intValue();
String ss = s < 10 ? ("0" + s) : ("" + s);
return ss;
}
else if (str.compareTo("s") == 0)
return hpdatetime.SECOND(new VString(exps)).strValue();
else if (str.compareTo("ss") == 0) {
short s = hpdatetime.SECOND(new VString(exps)).intValue();
String ss = s < 10 ? ("0" + s) : ("" + s);
return ss;
}
else if (str.compareTo("ttttt") == 0)
return five_t(exps);
else if (str.compareTo("AM/PM") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "AM";
else return "PM";
}
else if (str.compareTo("am/pm") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "am";
else return "pm";
}
else if (str.compareTo("A/P") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "A";
else return "P";
}
else if (str.compareTo("a/p") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "a";
else return "p";
}
else if (str.compareTo("AMPM") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "AM";
else return "PM";
}
else if (str.compareTo("ampm") == 0) {
if (hpdatetime.HOUR(new VString(exps)).intValue() < 12)
return "AM";
else return "PM";
}
else return null;
}
private static String per_Cent(String exp) {
int i,j;
StringBuffer sb = new StringBuffer();
int l = exp.length();
j = exp.indexOf('.');
if (j!=-1) {
sb.append(exp.substring(0,j));
i = l-1-j;
if(i == 0)
sb.append("00");
else if(i == 1)
sb.append(exp.substring(j+1)).append("0");
else if(i == 2)
sb.append(exp.substring(j+1));
else {
sb.append(exp.substring(j+1));
sb.insert(j+2,'.');
}
for (i = 0; i < sb.length(); i++)
if (sb.charAt(i) != '0')
break;
if (i != 0 && i != sb.length())
return (sb.toString()).substring(i);
else if (i == sb.length())
return "0";
else
return sb.toString();
}
else
return exp.concat("00");
}
private static String Per(String exp, String fmt) throws HpException {
int i,j,m,k;
double exp1 = 0;
j = fmt.indexOf('%');
if(j != -1) {
m = 0; i = 0;
for (; i < fmt.length(); i++) {
fmt = fmt.substring(i,fmt.length());
k = fmt.indexOf('%');
if (k != -1) {
m++; i=k++;
}
else break;
}
if (new VString(exp).dblValue() != 0)
for (i = 0; i < m; i++)
exp = per_Cent(exp);
}
return exp;
}
//Note: Paramenter(leng) count to start from 0.
private static String tzRound(String exp, int leng) {
StringBuffer sb = new StringBuffer();
String str = null;
int i = 0;
int l = exp.length();
leng++;
if (leng == l)
return exp;
else
str = exp.substring(0,leng);
int k = str.indexOf('.');
if (k != -1) {
for (i = 0; i < leng; i++)
if (str.charAt(i) != '.')
sb.append(str.charAt(i));
str = sb.toString();
StringBuffer sbe = new StringBuffer();
for (i = 0; i < exp.length(); i++)
if (exp.charAt(i) != '.')
sbe.append(exp.charAt(i));
exp = sbe.toString();
leng--;
}
if(exp.charAt(leng)=='.')
exp = exp.substring(0,leng).concat(exp.substring(leng+1));
sb = new StringBuffer();
sb.append(str);
if (exp.length() == leng)
return exp;
if (exp.charAt(leng)>='5') {
if (exp.charAt(leng)=='5') {
if (exp.charAt(leng-1)!='9')
sb.setCharAt(leng-1,(char)((int)exp.charAt(leng-1) + 1));
}
else {
for (i = leng-1; i >= 0; ) {
if(exp.charAt(i) == '9')
--i;
else break;
}
if (i<(leng-1)) {
if(i==-1) {
i++; leng++;
sb.insert(0,'1');
if(k != -1)
k++;
}
else
sb.setCharAt(i,(char)((int)exp.charAt(i) + 1));
for(i=i+1; i<leng; i++)
sb.setCharAt(i,'0');
}
else
sb.setCharAt(leng-1,(char)((int)exp.charAt(leng-1) + 1));
}
}
if(k != -1)
sb.insert(k,'.');
return sb.toString();
}
private static String manyComma(String exp1, String fmt) throws HpException
{
int i,j,k,p;
String exp = exp1.trim();
StringBuffer sb = new StringBuffer();
char c ;
j = fmt.indexOf('.');
if(j == -1) j = fmt.length();
if(j != -1 && fmt.substring(j).indexOf(',') != -1)
throw new HpException(5, "Invalid procedure call");
k = fmt.substring(0,j).indexOf(',');
if(k != -1) {
p = exp.indexOf('.');
if(p != -1) {
sb.append(exp.substring(0,p));
sb.append(exp.substring(p+1));
exp = sb.toString();
}
sb = new StringBuffer();
sb.append(exp);
if(p == -1) p = exp.length();
if (k == j-1) p = p-3;
else {
int m=1; i = 1;
for(; i < j-k; )
{
if(fmt.charAt(k-1)!='0' && fmt.charAt(k-1)!='#')
throw new HpException(5, "Invalid procedure call");
c = fmt.charAt(k+i);
if(c=='0' || c=='#') {
if(fmt.substring(k+i,j).indexOf(',') != -1) {
isComma = true;
k = fmt.substring(k+i,j).indexOf(',')+(k+i);
m = 1;
continue;
}
else return comma(exp1, null);
}
else if (c==',') { i++; m++; }
else i++;
}
p = p-3*m;
}
if (p > 0) sb.insert(p,'.');
else {
for (i = 0; i<1-p; i++)
sb.insert(0,'0');
sb.insert(1, '.');
}
exp = sb.toString();
if(isComma)
exp = comma(exp, null);
}
return exp;
}
private static String fmYear(String tmp) throws HpException {
int y = hpdatetime.YEAR(new VString(tmp)).lngValue();
if (y >= 1900 && y <= 1999)
return hpdatetime.YEAR(new VString(tmp)).strValue().substring(2,4);
return hpdatetime.YEAR(new VString(tmp)).strValue();
}
private static boolean isNumOrDate(Variant var) throws HpException {
if (var.getType() == Variant.V_EMPTY)
return false;
if (hpdatetime.ISDATE(var))
return true;
return HpFuncMisc.ISNUMERIC(var);
}
private static String WeekDayName(Variant weekday, int abbr, int firstdw) throws HpException
{
String result = null;
int wday = (int)Math.round(strToDbl(weekday.strValue()));
if (wday > 7 || wday <= 0)
throw new HpException(95, "Invalid procedure call");
if (firstdw > 7 || firstdw < 0)
throw new HpException(95, "Invalid procedure call");
if (abbr == 0 && firstdw != 0)
result = weekdayname(Math.abs(firstdw + wday - 2) % 7);
else if (abbr == 0 && firstdw == 0)
result = weekdayname( wday - 1 );
else if (firstdw != 0)
result = weekdayname( Math.abs(firstdw+wday-2) % 7 ).substring(0,3);
else
result = weekdayname( wday-1 ).substring(0,3);
return result;
}
static String weekdayname(int number) throws HpException
{
String wdayname = null;
switch(number)
{
case 0:
wdayname = "Sunday"; break;
case 1:
wdayname = "Monday"; break;
case 2:
wdayname = "Tuesday"; break;
case 3:
wdayname = "Wednesday"; break;
case 4:
wdayname = "Thursday"; break;
case 5:
wdayname = "Friday"; break;
case 6:
wdayname = "Saturday"; break;
default:
throw new HpException(95,"Invalid procedure call");
}
return wdayname;
}
private static String boolToStr(String boolStr) {
if(boolStr.equalsIgnoreCase("true")) boolStr = "-1";
if(boolStr.equalsIgnoreCase("false")) boolStr = "0";
if(boolStr.equalsIgnoreCase("yes")) boolStr = "-1";
if(boolStr.equalsIgnoreCase("no")) boolStr = "0";
if(boolStr.equalsIgnoreCase("on")) boolStr = "-1";
if(boolStr.equalsIgnoreCase("off")) boolStr = "0";
return boolStr;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?