⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oracletimestampformat.java

📁 mysql集群
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				int len = ampm[i].length();				if (source.regionMatches(true, idx, ampm[i], 0, len)) {					pos.setIndex(idx+len);					cal.set(ERA, i);					return;				}			}			throw new java.text.ParseException("", 0);		}		public String toString() {			return "AM";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new fAM());	}	public static final class fPM extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			String[] ampm = symb.getAmPmStrings();			int am = cal.get(AM_PM);			str.append(ampm[am]);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			String[] ampm = symb.getAmPmStrings();			int idx = pos.getIndex();			for (int i = 0; i < ampm.length; i++) {				int len = ampm[i].length();				if (source.regionMatches(true, idx, ampm[i], 0, len)) {					pos.setIndex(idx+len);					cal.set(ERA, i);					return;				}			}			throw new java.text.ParseException("", 0);		}		public String toString() {			return "PM";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new fPM());	}	public static final class PdMd extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int am = cal.get(AM_PM);			str.append((am == AM) ? "a.m." : "p.m.");			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int i = pos.getIndex();			String t = source.substring(i, i+4);			if (toString().equals(t.toUpperCase())) {				pos.setIndex(i+4);				cal.set(AM_PM, PM);			}			else if (t.toUpperCase().equals("A.M.")) {				pos.setIndex(i+4);				cal.set(AM_PM, AM);			} else {				throw new java.text.ParseException("", 0);			}		}		public String toString() {			return "P.M.";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new PdMd());	}	public static final class AdMd extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int am = cal.get(AM_PM);			str.append((am == AM) ? "a.m." : "p.m.");			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int i = pos.getIndex();			String t = source.substring(i, i+4);			if (toString().equals(t.toUpperCase())) {				pos.setIndex(i+4);				cal.set(AM_PM, AM);			}			else if (t.toUpperCase().equals("P.M.")) {				pos.setIndex(i+4);				cal.set(AM_PM, PM);			} else {				throw new java.text.ParseException("", 0);			}		}		public String toString() {			return "A.M.";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new AdMd());	}	public static final class MI extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int minute = cal.get(MINUTE);			String m = Integer.toString(minute);			if (m.length() == 1) {				str.append('0');			}			str.append(m);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int minute = getNumber(source, pos, 2);			cal.set(MINUTE, minute);		}		public String toString() {			return "MI";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new MI());	}	public static final class SSSSS extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int hour = cal.get(HOUR);			int minute = cal.get(MINUTE);			int second = cal.get(SECOND);			String s = Integer.toString(hour*60*60+minute*60+second);			for (int i = s.length(); i < 5; i++) {				str.append('0');			}			str.append(s);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int sssss = getNumber(source, pos, 5);			int hour = sssss/3600;			sssss -= hour;			int minute = sssss/60;			int second = sssss-minute;			cal.set(HOUR, hour);			cal.set(MINUTE, minute);			cal.set(SECOND, second);		}		public String toString() {			return "SSSSS";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new SSSSS());	}	public static final class SS extends TIME {		public StringBuffer toString(StringBuffer str, Calendar cal, DateFormatSymbols symb) throws java.text.ParseException {			int second = cal.get(SECOND);			String s = Integer.toString(second);			if (s.length() == 1) {				str.append('0');			}			str.append(s);			return str;		}		public void parse(Calendar cal, DateFormatSymbols symb, String source, ParsePosition pos) throws java.text.ParseException {			int second = getNumber(source, pos, 2);			cal.set(SECOND, second);		}		public String toString() {			return "SS";		}	};	static {		OracleTimestampFormat.timeSymbols.add(new SS());	}	protected OracleTimestampFormat() {	}		public OracleTimestampFormat(String pattern) throws java.text.ParseException {		cal = Calendar.getInstance();		symb = new DateFormatSymbols();		format = formatsCache.get(pattern);		if (format == null) {			format = new ArrayList<Object>();			ArrayList<DATE> symb = (ArrayList<DATE>)dateSymbols.clone();			symb.addAll(timeSymbols);			compilePattern(format, symb, pattern);			formatsCache.put(pattern, format);		}	}	public OracleTimestampFormat(String pattern, Calendar calendar, DateFormatSymbols dateSymb) throws java.text.ParseException {		cal = calendar;		symb = dateSymb;		format = formatsCache.get(pattern);		if (format == null) {			format = new ArrayList<Object>();			ArrayList<DATE> symb = (ArrayList<DATE>)dateSymbols.clone();			symb.addAll(timeSymbols);			compilePattern(format, symb, pattern);			formatsCache.put(pattern, format);		}	}		public OracleTimeFormat getTimeFormat() {		ArrayList<Object> f = new ArrayList<Object>();		int first = 0;		int last = f.size();		for (int i = 0; i < f.size(); i++) {			Object obj = format.get(i);			if (obj instanceof TIME) {				if (i > first) {					first = i;				}				else if (i < last) {					last = i;				}			}		}		for (int i = first; i < last; i++) {			f.add(format.get(i));		}		return new OracleTimeFormat(f, cal, symb);	}		public OracleDateFormat getDateFormat() {		ArrayList<Object> f = new ArrayList<Object>();		int first = 0;		int last = f.size();		for (int i = 0; i < f.size(); i++) {			Object obj = format.get(i);			if (obj instanceof DATE) {				if (i > first) {					first = i;				}				else if (i < last) {					last = i;				}			}		}		for (int i = first; i < last; i++) {			f.add(format.get(i));		}		return new OracleDateFormat(f, cal, symb);	}	public String toString() {		if (format != null) {			StringBuilder str = new StringBuilder();			for (Object obj : format) {				str.append(obj.toString());			}			return str.toString();		} else {			return "null";		}	}	public boolean equals(Object obj) {		if (obj == null) {			return false;		}		if (this == obj) {			return true;		}		if (getClass() != obj.getClass()) {			return false;		}		OracleTimestampFormat other = (OracleTimestampFormat)obj;		return (format != null) ? format.equals(other.format) : false;	}	protected static void compilePattern(ArrayList<Object> format, ArrayList<DATE> symbols, String pattern) throws java.text.ParseException {		if (pattern == null) {			throw new java.text.ParseException(PATTERN_EXCEPTION, 0);		}		StringBuilder fill = new StringBuilder();		final int plen = pattern.length();		for (int i = 0; i < plen; ) {			boolean f = false;			for (DATE d : symbols) {				String symb = d.toString();				if (i+symb.length() <= plen && pattern.regionMatches(true, i, symb, 0, symb.length())) {					if (fill.length() > 0) {						format.add(fill.toString());						fill.setLength(0);					}					format.add(d);					i += symb.length();					f = true;					break;				}			}			if (!f) {				char c = pattern.charAt(i);				if (!Character.isLetterOrDigit(c)) {					fill.append(c);					i++;				} else {					throw new java.text.ParseException(PATTERN_EXCEPTION, i);				}			}		}		if (fill.length() > 0) {			format.add(fill.toString());		}	}	public StringBuffer format(Object obj, StringBuffer str, FieldPosition fieldPosition) {		if (obj instanceof java.util.Date) {			java.util.Date date = (java.util.Date)obj;			cal.setTime(date);			if (format != null) {				for (Object f : format) {					if (f instanceof String) {						str.append((String)f);					} else {						DATE d = (DATE)f;						try {							d.toString(str, cal, symb);						} catch (Exception e) {							e.printStackTrace();						}					}				}			}		}		return str;	}		public Object parseObject(String source, ParsePosition pos) {		return new java.sql.Timestamp(parseInMillis(source, pos));	}		protected long parseInMillis(String source, ParsePosition pos) {		int year = cal.get(YEAR);		int month = cal.get(MONTH);		cal.clear();		cal.set(YEAR, year);		cal.set(MONTH, month);		final int slen = source.length();		try {			if (format != null) {				for (Object obj : format) {					if (obj instanceof DATE) {						DATE d = (DATE)obj;						d.parse(cal, symb, source, pos);					}				}				for (int i = pos.getIndex(); i < slen; i++) {					final char c = source.charAt(i);					if (Character.isLetterOrDigit(c)) {						throw new java.text.ParseException(FORMAT_EXCEPTION, 0);					}				}				pos.setIndex(slen);			}		} catch (Exception e) {//			e.printStackTrace();			pos.setErrorIndex(pos.getIndex());			pos.setIndex(0);			return 0;		}		return cal.getTimeInMillis();	}		private static char getSign(String source, ParsePosition pos) throws java.text.ParseException {		final int len = source.length();		int i;		for (i = pos.getIndex(); i < len; i++) {			final char c = source.charAt(i);			if (c == '-' || c == '+') {				pos.setIndex(i);				return c;			}			if (Character.isDigit(c)) {				pos.setIndex(i);				return '+';			}			if (Character.isLetter(c)) {				pos.setIndex(i);				throw new java.text.ParseException("", i);			}		}		throw new java.text.ParseException("", i);	}		private static int getNumber(String source, ParsePosition pos, int digits) 				throws java.text.ParseException, NumberFormatException {		final int len = source.length();		String d = "";		int i;		for (i = pos.getIndex(); i < len; i++) {			final char c = source.charAt(i);			if (Character.isDigit(c)) {				break;			}			else if (Character.isLetter(c)) {				pos.setIndex(i);				throw new java.text.ParseException("", i);			}		}		for (; i < len; i++) {			final char c = source.charAt(i);			if (Character.isDigit(c)) {				d += c;				if (d.length() == digits) {					pos.setIndex(i+1);					return Integer.valueOf(d);				}			}			else if (Character.isLetter(c)) {				pos.setIndex(i);				throw new java.text.ParseException("", i);			} else {				break;			}		}		pos.setIndex(i);		return Integer.valueOf(d);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -