Skip to content

Instantly share code, notes, and snippets.

@luke
Last active March 14, 2018 12:12
Show Gist options
  • Select an option

  • Save luke/8d24ba17a0d7dc8f7dc14b703db2dfff to your computer and use it in GitHub Desktop.

Select an option

Save luke/8d24ba17a0d7dc8f7dc14b703db2dfff to your computer and use it in GitHub Desktop.

Revisions

  1. luke revised this gist Mar 14, 2018. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions timezonechange.js
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@ function onTimezoneOffsetChange(changeHandler){
    return d.getTimezoneOffset()
    }

    function getHourOffset(){
    function getNextHourOffset(){
    const d = new Date()
    return (1000*60*60) - (((d.getMinutes()*60) + d.getSeconds()) * 1000) + d.getMilliseconds()
    }
    @@ -21,7 +21,7 @@ function onTimezoneOffsetChange(changeHandler){
    changeHandler(tzOffset)
    }
    scheduleCheck()
    }, getHourOffset()+1) // run 1ms after end of hour
    }, getNextHourOffset()+1) // run 1ms after end of hour
    }

    scheduleCheck()
  2. luke created this gist Mar 14, 2018.
    33 changes: 33 additions & 0 deletions timezonechange.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,33 @@
    function onTimezoneOffsetChange(changeHandler){

    function getTimezoneOffset(){
    const d = new Date()
    return d.getTimezoneOffset()
    }

    function getHourOffset(){
    const d = new Date()
    return (1000*60*60) - (((d.getMinutes()*60) + d.getSeconds()) * 1000) + d.getMilliseconds()
    }

    let lastTZOffset = getTimezoneOffset()
    let timeoutRef

    function scheduleCheck(){
    timeoutRef = setTimeout(function(){
    const tzOffset = getTimezoneOffset()
    if(lastTZOffset !== tzOffset){
    lastTZOffset = tzOffset
    changeHandler(tzOffset)
    }
    scheduleCheck()
    }, getHourOffset()+1) // run 1ms after end of hour
    }

    scheduleCheck()
    }

    onTimezoneOffsetChange(function(tzOffset){
    console.log("timezone changed")
    // location.reload() or refresh somehow
    })