diff --git a/bits/20_jsutils.js b/bits/20_jsutils.js index 97c0a14..40052fd 100644 --- a/bits/20_jsutils.js +++ b/bits/20_jsutils.js @@ -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; } diff --git a/test.js b/test.js index 93dfd69..23d3ea8 100644 --- a/test.js +++ b/test.js @@ -1422,10 +1422,10 @@ function seq(end/*:number*/, start/*:?number*/)/*:Array*/ { } 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'); diff --git a/xlsx.flow.js b/xlsx.flow.js index f6044bf..084f4c6 100644 --- a/xlsx.flow.js +++ b/xlsx.flow.js @@ -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; } diff --git a/xlsx.js b/xlsx.js index da15df5..8cfd42e 100644 --- a/xlsx.js +++ b/xlsx.js @@ -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; }