forked from sheetjs/sheetjs
		
	- support 上午/下午 (like AM/PM, supported in en-US and other locales) - `format(number)` guess format if table is missing value - removed entry 65535 from table
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var abstime = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;
 | 
						|
function fmt_is_date(fmt/*:string*/)/*:boolean*/ {
 | 
						|
	var i = 0, /*cc = 0,*/ c = "", o = "";
 | 
						|
	while(i < fmt.length) {
 | 
						|
		switch((c = fmt.charAt(i))) {
 | 
						|
			case 'G': if(isgeneral(fmt, i)) i+= 6; i++; break;
 | 
						|
			case '"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;
 | 
						|
			case '\\': i+=2; break;
 | 
						|
			case '_': i+=2; break;
 | 
						|
			case '@': ++i; break;
 | 
						|
			case 'B': case 'b':
 | 
						|
				if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") return true;
 | 
						|
				/* falls through */
 | 
						|
			case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':
 | 
						|
				/* falls through */
 | 
						|
			case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;
 | 
						|
			case 'A': case 'a': case '上':
 | 
						|
				if(fmt.substr(i, 3).toUpperCase() === "A/P") return true;
 | 
						|
				if(fmt.substr(i, 5).toUpperCase() === "AM/PM") return true;
 | 
						|
				if(fmt.substr(i, 5).toUpperCase() === "上午/下午") return true;
 | 
						|
				++i; break;
 | 
						|
			case '[':
 | 
						|
				o = c;
 | 
						|
				while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);
 | 
						|
				if(o.match(abstime)) return true;
 | 
						|
				break;
 | 
						|
			case '.':
 | 
						|
				/* falls through */
 | 
						|
			case '0': case '#':
 | 
						|
				while(i < fmt.length && ("0#?.,E+-%".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */}
 | 
						|
				break;
 | 
						|
			case '?': while(fmt.charAt(++i) === c){/* empty */} break;
 | 
						|
			case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;
 | 
						|
			case '(': case ')': ++i; break;
 | 
						|
			case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
 | 
						|
				while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;
 | 
						|
			case ' ': ++i; break;
 | 
						|
			default: ++i; break;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return false;
 | 
						|
}
 | 
						|
SSF.is_date = fmt_is_date;
 |