在javascript中显示客户端时间而不是服务器时间

Fel*_*sty 3 javascript datetime

我对javascriptDate()函数的奇怪问题感兴趣,这些是细节

服务器端:Struts(ActionForm、Action 类、jsp)
客户端:jQuery、javascript

现在,我需要页面上的服务器时间并使用 javascript 进行操作。所以,我Calendar.getInstance().getTimeinMillis();在 action 类中做 了,并将它保存为 ActionForm 属性。

现在,在客户端,我从 styleId 中获得了长值 (timeinMillis)。但是,为了操纵,当我做

var curTime = parseInt($("#serverTime").val());
var serverTime = new Date(curTime);
Run Code Online (Sandbox Code Playgroud)

现在,虽然我们提供服务器的 timeinMillis,但 serverTime 提供的是客户端机器日期而不是服务器日期。

奇怪的是,当我从服务器传递日期的字符串值而不是 long timeinMillis 并将其作为参数传递时,它运行良好。

任何的想法?

Sun*_*van 5

这是因为您的 javascript 在客户端机器上运行,所以当您在 javascript 中创建 new Date() 时,它会获取客户端机器时间。

如果您将服务器日期作为字符串传递,则回答第二个查询,它将创建该日期的日期对象。

使用以下功能

    function calcTime(offset) {
        // create Date object for current location
        d = new Date();
       // convert to msec, add local time zone offsetand  get UTC time in msec
        utc = d.getTime() + (d.getTimezoneOffset() * 60000);

        // create new Date object with supplied offset
        nd = new Date(utc + (3600000*offset));

        // return time as a string
        return "The Server time is " + nd.toLocaleString();

    }
Run Code Online (Sandbox Code Playgroud)

在这里,您需要使用 UTC 传递服务器时间的偏移量