| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | /*jshint -W086 */ | 
					
						
							|  |  |  | function write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ { | 
					
						
							|  |  |  | 	var o="", ss=0, tt=0, y = val.y, out, outl = 0; | 
					
						
							|  |  |  | 	switch(type) { | 
					
						
							|  |  |  | 		case 98: /* 'b' buddhist year */ | 
					
						
							|  |  |  | 			y = val.y + 543; | 
					
						
							|  |  |  | 			/* falls through */ | 
					
						
							|  |  |  | 		case 121: /* 'y' year */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = y % 100; outl = 2; break; | 
					
						
							|  |  |  | 			default: out = y % 10000; outl = 4; break; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 109: /* 'm' month */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = val.m; outl = fmt.length; break; | 
					
						
							|  |  |  | 			case 3: return months[val.m-1][1]; | 
					
						
							|  |  |  | 			case 5: return months[val.m-1][0]; | 
					
						
							|  |  |  | 			default: return months[val.m-1][2]; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 100: /* 'd' day */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = val.d; outl = fmt.length; break; | 
					
						
							|  |  |  | 			case 3: return days[val.q][0]; | 
					
						
							|  |  |  | 			default: return days[val.q][1]; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 104: /* 'h' 12-hour */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; | 
					
						
							|  |  |  | 			default: throw 'bad hour format: ' + fmt; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 72: /* 'H' 24-hour */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = val.H; outl = fmt.length; break; | 
					
						
							|  |  |  | 			default: throw 'bad hour format: ' + fmt; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 77: /* 'M' minutes */ | 
					
						
							|  |  |  | 		switch(fmt.length) { | 
					
						
							|  |  |  | 			case 1: case 2: out = val.M; outl = fmt.length; break; | 
					
						
							|  |  |  | 			default: throw 'bad minute format: ' + fmt; | 
					
						
							|  |  |  | 		} break; | 
					
						
							|  |  |  | 		case 115: /* 's' seconds */ | 
					
						
							| 
									
										
										
										
											2017-07-28 20:24:37 +00:00
										 |  |  | 			if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; | 
					
						
							|  |  |  | 			if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); | 
					
						
							|  |  |  | 			/*::if(!ss0) ss0 = 0; */ | 
					
						
							|  |  |  | 			if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; | 
					
						
							|  |  |  | 			else tt = ss0 === 1 ? 10 : 1; | 
					
						
							|  |  |  | 			ss = Math.round((tt)*(val.S + val.u)); | 
					
						
							|  |  |  | 			if(ss >= 60*tt) ss = 0; | 
					
						
							|  |  |  | 			if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; | 
					
						
							|  |  |  | 			o = pad0(ss,2 + ss0); | 
					
						
							|  |  |  | 			if(fmt === 'ss') return o.substr(0,2); | 
					
						
							|  |  |  | 			return "." + o.substr(2,fmt.length-1); | 
					
						
							| 
									
										
										
										
											2017-03-21 07:45:12 +00:00
										 |  |  | 		case 90: /* 'Z' absolute time */ | 
					
						
							|  |  |  | 		switch(fmt) { | 
					
						
							|  |  |  | 			case '[h]': case '[hh]': out = val.D*24+val.H; break; | 
					
						
							|  |  |  | 			case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; | 
					
						
							|  |  |  | 			case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; | 
					
						
							|  |  |  | 			default: throw 'bad abstime format: ' + fmt; | 
					
						
							|  |  |  | 		} outl = fmt.length === 3 ? 1 : 2; break; | 
					
						
							|  |  |  | 		case 101: /* 'e' era */ | 
					
						
							|  |  |  | 			out = y; outl = 1; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if(outl > 0) return pad0(out, outl); else return ""; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | /*jshint +W086 */ |