在JavaScript中将GMT时间戳(DD / MM / YYYY)转换为本地时间(MM / DD / YYYY)

时间:2010-07-08 16:24:37

标签: javascript

我从服务器的SOAP响应中获取的时间戳格式为欧洲表示法和GMT时间格式(例如:08/07/2010 11:22:00 AM)。我想将其转换为本地时间并将格式更改为(MM / DD / 2010 HH:MM:SS AM / PM)。

我知道JavaScript Date对象,但无法弄清楚如何进行转换的逻辑。任何人都可以帮助我吗?

5 个答案:

答案 0 :(得分:1)

你真的需要日期对象吗?如果你所做的只是切换那个确切格式的字符串的前两部分,

var pieces = str.split('/');
str = pieces[1] + '/' + pieces[0] + '/' + pieces[2];

答案 1 :(得分:1)

使用以下方法解析日期:

Date.parse("08/07/2010 11:22:00 AM");

要将GMT日期转换为本地日期(浏览器或js useragent上的日期),请使用以下函数:

     function getLocalTime(gmt)  {
       var min = gmt.getTime() / 1000 / 60; // convert gmt date to minutes
       var localNow = new Date().getTimezoneOffset(); // get the timezone 
                                                      // offset in minutes            
       var localTime = min - localNow; // get the local time
       return new Date(localTime * 1000 * 60); // convert it into a date
    }

    var dt = new Date(Date.parse("08/07/2010 11:22:00 AM"));
    var localDate = getLocalTime(dt);

接下来是日期格式,这非常简单。在新获得的(本地)日期调用以下函数:

localDate.getXXX(); // where XXX is Hour, Minutes, etc.

注意:在FF中测试过。根据其他浏览器的要求进行调整:)

答案 2 :(得分:1)

我知道这已经有一年了,而且已经接受了答案。万一有人到处寻找...

您可以将时区信息附加到格式化字符串并创建日期对象以获得所需内容。

var x = "08/07/2010 11:22:00 AM".split('/');
var d = new Date(x[1] + '/' + x[0] + '/' + x[2] + " GMT");

jsfiddle

为了确保我理解你想要的东西,我随之运行了这个有效的答案,两者都返回相同的结果。

答案 3 :(得分:0)

function switchFormat(dateString) {
    var a = dateString.split('/'),
        b;
    b = a[0];
    a[0] = a[1];
    a[1] = b;
    return a.join('/');
}

<强>被修改

Try it here

答案 4 :(得分:0)

var serverTimestamp = storArray[a][0];
var pieces = serverTimestamp.split('/'); 
storArray[a][0] = pieces[1] + '/' + pieces[0] + '/' + pieces[2];
var gmt = new Date(storArray[a][0]);
var localTime = gmt.getTime() - (gmt.getTimezoneOffset() * 60000); // convert gmt date to minutes
var localDate = new Date(localTime); // convert it into a date