我有一个将日期从服务器时区转换为客户端/用户时区的功能。它基于Displaying date/time in user's timezone - on client side:
function getLocalDate(sourceDate){
if(sourceDate === '' || sourceDate === null){
return "";
}
var d = new Date(sourceDate);
var hours = d.getHours(),
min = d.getMinutes() + '',
pm = false,
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
if(hours > 11){
hours = hours - 12;
pm = true;
}
if(hours == 0) hours = 12;
if(min.length == 1) min = '0' + min;
dStr = months[d.getMonth()] + ' ' + d.getDate() + ' ' + d.getFullYear() + ', ' + hours + ':' + min + ' ' + (pm ? 'PM' : 'AM');
return dStr;
}
该函数获取带有时区的日期/时间(从服务器设置)并输出相同的日期/时间,但是在浏览器时区中。
转换适用于美国时区(EST,CST等)。对于其他时区 - 例如CEST(德国),EAT(肯尼亚),IST(印度) - 我的结果好坏参半。有时我得到undefined NaN NaN, NaN:NaN AM
。 Othertimes我得到了一个正确的日期/时间,但与真实情况相差甚远,即转换提供的时间提前或落后。
浏览器日期/时间转换能否适用于非美国时区?
感谢。