Last active
November 5, 2017 18:43
-
-
Save TanAlex/c9a2cc05d187a53bdb481f1d9d29fa94 to your computer and use it in GitHub Desktop.
javascript handle local and UTC time and string conversion
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function convert_to_utc (today){ | |
var localoffset = -(today.getTimezoneOffset()/60); | |
//var destoffset = -4; | |
//var offset = destoffset-localoffset; | |
var offset = localoffset; | |
var d = new Date( today.getTime() + offset * 3600 * 1000); | |
return d; | |
} | |
function date_to_string(date){ | |
var dd = date.getDate(); | |
var mm = date.getMonth()+1; //January is 0! | |
var yyyy = date.getFullYear(); | |
if(dd<10){ | |
dd='0'+dd; | |
} | |
if(mm<10){ | |
mm='0'+mm; | |
} | |
var ret = yyyy+'-'+mm+'-'+dd; | |
return ret; | |
} | |
function padZero(number){ | |
return number <= 9 ? ("0"+number).slice(-2) : number; | |
} | |
function localTimeStringToUTCTimeString (localTimeString){ | |
var date = new Date(localTimeString); | |
if (isNaN(date)) { | |
throw new Error("date parsing error: " + localTimeString); | |
} | |
return (date.getUTCFullYear()+"-"+ padZero(date.getUTCMonth()+1)+"-"+padZero(date.getUTCDate())+" " | |
+padZero(date.getUTCHours())+":"+padZero(date.getUTCMinutes())+":"+padZero(date.getUTCSeconds())); | |
} | |
function localTimeToUTCTimeString (date){ | |
//var date = new Date(localTimeString); | |
if (isNaN(date)) { | |
throw new Error("date parsing error: " + localTimeString); | |
} | |
return (date.getUTCFullYear()+"-"+ padZero(date.getUTCMonth()+1)+"-"+padZero(date.getUTCDate())+" " | |
+padZero(date.getUTCHours())+":"+padZero(date.getUTCMinutes())+":"+padZero(date.getUTCSeconds())); | |
} | |
function stdTimezoneOffset(date) { | |
var jan = new Date(date.getFullYear(), 0, 1); | |
var jul = new Date(date.getFullYear(), 6, 1); | |
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); | |
} | |
//@purpose: given t as UTC timestring, return an object for its localTimeString and timeZoneString | |
//@param t : String, | |
//@return: { timeString: time, timeZone: timeZoneString } | |
function localizeTime (t) | |
{ | |
//var d=new Date(t.replace("T", " ")+" UTC"); | |
var d=new Date(t+"Z"); | |
var currentTimeZoneOffsetInHours = d.getTimezoneOffset() / 60; | |
var sign; | |
if (currentTimeZoneOffsetInHours > 0){ | |
sign = "-"; | |
}else{ | |
sign = "+"; | |
} | |
var timeZone = "GMT "+sign+currentTimeZoneOffsetInHours; | |
var isDst = d.getTimezoneOffset() < stdTimezoneOffset(d); | |
if (timeZone == "GMT -6" && isDst){ | |
timeZone = "MDT"; | |
}else if (timeZone == "GMT -7" && !isDst){ | |
timeZone = "MST"; | |
}else if(timeZone == "GMT -7" && isDst){ | |
timeZone = "PDT"; | |
}else if(timeZone == "GMT -8" && !isDst){ | |
timeZone = "PST"; | |
}else if(timeZone == "GMT -4" && isDst){ | |
timeZone = "EDT"; | |
}else if(timeZone == "GMT -5" && !isDst){ | |
timeZone = "EST"; | |
} | |
var timeString = d.getFullYear()+"-"+(d.getMonth() + 1) + "-" + d.getDate() +" " + | |
d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); | |
return { timeString: timeString, timeZone: timeZone }; | |
//return (d.toString()); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment