将日期/时间转换为用户的时区对非美国时区不起作用

时间:2015-10-21 06:54:40

标签: javascript date datetime timezone

我有一个将日期从服务器时区转换为客户端/用户时区的功能。它基于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我得到了一个正确的日期/时间,但与真实情况相差甚远,即转换提供的时间提前或落后。

浏览器日期/时间转换能否适用于非美国时区?

感谢。

0 个答案:

没有答案