forked from sheetjs/sheetjs
		
	Refactor OADate handling
This commit is contained in:
		
							parent
							
								
									51d05ad8a0
								
							
						
					
					
						commit
						b1c5037ca8
					
				
							
								
								
									
										24
									
								
								xlsx.js
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										24
									
								
								xlsx.js
									
									
									
										generated
									
									
									
								
							| @ -3213,23 +3213,21 @@ function evert_arr(obj) { | ||||
| 	return o; | ||||
| } | ||||
| 
 | ||||
| var basedate = new Date(Date.UTC(1899, 11, 30, 0, 0, 0)); // 2209161600000
 | ||||
| var base1900 = Date.UTC(1899, 11, 30); | ||||
| var base1904 = Date.UTC(1904, 0, 1); | ||||
| 
 | ||||
| // According to https://docs.microsoft.com/ru-ru/archive/blogs/ericlippert/erics-complete-guide-to-vt_date 
 | ||||
| // we must treat OLE Automation Date as it has no timezone at all.
 | ||||
| // So to avoid any possible TZ/DST issues do calculations in UTC
 | ||||
| function datenum(v, date1904) { | ||||
| 	var epoch = v.getTime(); | ||||
| 	if(date1904) epoch -= 1462*24*60*60*1000; | ||||
| 	var dnthresh = basedate.getTime() + v.getTimezoneOffset() * 60000; | ||||
| 	return (epoch - dnthresh) / (24 * 60 * 60 * 1000); | ||||
| 	var start = date1904 ? base1904 : base1900; | ||||
| 	var vTime = Date.UTC(v.getFullYear(), v.getMonth(), v.getDate(), v.getHours(), v.getMinutes(), v.getSeconds(), v.getMilliseconds()); | ||||
| 	return (vTime - start) / 86400000; | ||||
| } | ||||
| var refdate = new Date(); | ||||
| var refoffset = refdate.getTimezoneOffset(); | ||||
| var dnthresh = basedate.getTime() + refoffset * 60000; | ||||
| function numdate(v) { | ||||
| 	var out = new Date(); | ||||
| 	out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); | ||||
| 	if (out.getTimezoneOffset() !== refoffset) { | ||||
| 		out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); | ||||
| 	} | ||||
| 	var out = new Date(base1900 + v * 86400000); | ||||
| 	// De-adjust timezone offset
 | ||||
| 	out.setTime(out.getTime() + out.getTimezoneOffset() * 60000); | ||||
| 	return out; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user