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 + -
显示快捷键?