Skip to content

Instantly share code, notes, and snippets.

@TanAlex
Last active November 5, 2017 18:43
Show Gist options
  • Save TanAlex/c9a2cc05d187a53bdb481f1d9d29fa94 to your computer and use it in GitHub Desktop.
Save TanAlex/c9a2cc05d187a53bdb481f1d9d29fa94 to your computer and use it in GitHub Desktop.
javascript handle local and UTC time and string conversion
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