显示客户端时间,而不是 javascript 中的服务器时间
Client Time shown instead of server Time in javascript
我对javascript Date()
函数的奇怪问题感兴趣,这些是细节
服务器端:Struts(ActionForm,Action class,jsp)
客户端 : jQuery, javascript
现在,我需要在页面上使用服务器时间并使用javascript进行操作。因此,我在操作类中Calendar.getInstance().getTimeinMillis();
,并将其另存为操作窗体属性。
现在,在客户端,我从 styleId 中获取了长整型值 (timeinMillis)。但是,操纵,当我这样做
var curTime = parseInt($("#serverTime").val());
var serverTime = new Date(curTime);
现在,服务器时间提供客户端计算机日期而不是服务器日期,尽管我们提供的是服务器的时间。
奇怪的部分是,当我从服务器传递日期的字符串值而不是 long timeinMillis 并将其作为参数传递时,它运行良好。
知道吗?
这是因为你的javascript在客户端计算机上运行,所以当你在javascript中创建新的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();
}
在这里,您需要使用 UTC 传递服务器时间的偏移量
上述提示的帮助下解决了这个问题。
从java 方面,使用夏令时选项从 UTC 偏移。
所以,在行动类中
Calendar c = Calendar.getInstance();
TimeZone z = c.getTimeZone();
int offset = z.getOffset(c.getTimeInMillis());
这给出了本地时区和 UTC 时区的偏移量,包括夏令时
在javascript中,我使用了,
var now = new Date();
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());
var sd = new Date(now_utc.getTime() + offset);
alert("The Server time is " + sd.toLocaleString());
而且,这通过夏令时选项提供了正确的服务器时间。
非常感谢您的帮助,没有他们,就无法解决。干杯!
PHP 中的一个简单的解决方案:
var phpDate = '<?php echo date('Y/m/d H:m:s');?>'
, serverDate = new Date(phpDate)
, month = serverDate.getMonth()+1 //getMonth() returns a 0-based number.
, day = serverDate.getDate()
, year = serverDate.getFullYear();
console.log(year + '-' + month + '-' + day);
如果您的服务器和客户端时间位于不同的时区,并且您希望向用户显示此差异,则还必须将时区信息发送到客户端。
Calendar.getInstance().getTimeinMillis()
返回自纪元以来的毫秒数,但它不说明时区的任何信息。它只是自 1970 年 1 月 1 日 UTC 午夜以来的毫秒数,在任何时刻,这个数字在任何系统上都是相同的(好吧,考虑到时间是同步的),无论系统的时区如何。这可能会给您留下您获得客户端时间而不是服务器时间的印象。
这适用于日期的字符串表示的原因是其中包含的时区信息,以及 Javascript 解析该信息并在构造Date
对象时将其考虑在内的能力。
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 将日期时间javascript绑定到表列
- 将时间字符串值转换为时间javascript
- 将字符串转换为日期时间-javascript
- 日期和时间 JavaScript 的时间戳
- 从当前日期和时间 JavaScript 中减去 5 分钟
- 服务器时间而不是客户端时间 JAVASCRIPT
- 如何获取用户名,并将其与消息一起显示,具体取决于一天中的时间(Javascript)
- 将 UTC 转换为本地时间 Javascript
- 格式化日期时间JavaScript
- 如何将 UTC 时间转换为本地时间 JavaScript
- 天气json转换时间Javascript时间戳
- 转换时间戳在UTC到用户本地时间javascript
- 如何为测验设定时间(Javascript)
- 改变css样式取决于一天的时间(javascript)
- 将UNIX时间戳转换为日期时间(javascript)
- Date对象:创建时设置静态时间(Javascript)
- 为什么不是't我的网页显示时间(javaScript)
- if 语句 - 条件评估时间(Javascript)
- IE8 日期时间 JavaScript 差异