forked from sheetjs/sheetjs
		
	Better DST handling
h/t @lalomartins @lemmingworks Closes #1332 and related date issues
This commit is contained in:
		
							parent
							
								
									c91d2187e6
								
							
						
					
					
						commit
						548396f87d
					
				| @ -32,15 +32,21 @@ function evert_arr(obj/*:any*/)/*:EvertArrType*/ { | ||||
| } | ||||
| 
 | ||||
| var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000
 | ||||
| var dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| function datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { | ||||
| 	var epoch = v.getTime(); | ||||
| 	if(date1904) epoch -= 1462*24*60*60*1000; | ||||
| 	var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| 	return (epoch - dnthresh) / (24 * 60 * 60 * 1000); | ||||
| } | ||||
| var refdate = new Date(); | ||||
| var dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| var refoffset = refdate.getTimezoneOffset(); | ||||
| function numdate(v/*:number*/)/*:Date*/ { | ||||
| 	var out = new Date(); | ||||
| 	out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); | ||||
| 	if (out.getTimezoneOffset() !== refoffset) { | ||||
| 		out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); | ||||
| 	} | ||||
| 	return out; | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										4
									
								
								test.js
									
									
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								test.js
									
									
									
									
									
								
							| @ -1422,10 +1422,10 @@ function seq(end/*:number*/, start/*:?number*/)/*:Array<number>*/ { | ||||
| } | ||||
| 
 | ||||
| var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000
 | ||||
| var dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| function datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { | ||||
| 	var epoch = v.getTime(); | ||||
| 	if(date1904) epoch += 1462*24*60*60*1000; | ||||
| 	if(date1904) epoch -= 1462*24*60*60*1000; | ||||
| 	var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| 	return (epoch - dnthresh) / (24 * 60 * 60 * 1000); | ||||
| } | ||||
| var good_pd_date = new Date('2017-02-19T19:06:09.000Z'); | ||||
|  | ||||
| @ -2751,15 +2751,21 @@ function evert_arr(obj/*:any*/)/*:EvertArrType*/ { | ||||
| } | ||||
| 
 | ||||
| var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000
 | ||||
| var dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| function datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { | ||||
| 	var epoch = v.getTime(); | ||||
| 	if(date1904) epoch -= 1462*24*60*60*1000; | ||||
| 	var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| 	return (epoch - dnthresh) / (24 * 60 * 60 * 1000); | ||||
| } | ||||
| var refdate = new Date(); | ||||
| var dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| var refoffset = refdate.getTimezoneOffset(); | ||||
| function numdate(v/*:number*/)/*:Date*/ { | ||||
| 	var out = new Date(); | ||||
| 	out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); | ||||
| 	if (out.getTimezoneOffset() !== refoffset) { | ||||
| 		out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); | ||||
| 	} | ||||
| 	return out; | ||||
| } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										8
									
								
								xlsx.js
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										8
									
								
								xlsx.js
									
									
									
										generated
									
									
									
								
							| @ -2672,15 +2672,21 @@ function evert_arr(obj) { | ||||
| } | ||||
| 
 | ||||
| var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000
 | ||||
| var dnthresh = basedate.getTime() + (new Date().getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| function datenum(v, date1904) { | ||||
| 	var epoch = v.getTime(); | ||||
| 	if(date1904) epoch -= 1462*24*60*60*1000; | ||||
| 	var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| 	return (epoch - dnthresh) / (24 * 60 * 60 * 1000); | ||||
| } | ||||
| var refdate = new Date(); | ||||
| var dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; | ||||
| var refoffset = refdate.getTimezoneOffset(); | ||||
| 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); | ||||
| 	} | ||||
| 	return out; | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user