如何调整客户端和服务器的时间戳差异
how to adjust timestamp difference of client and server?
向用户显示消息"发送时间"的最佳方式是什么?用"服务器端时间()函数"保存更好,还是用"客户端getTime()"保存并用ajax更新该值更好?
如果服务器和客户端位于不同的时区,请将其中一个时区设置为与另一个时区相同,或者使用时区差异(例如+2小时),然后根据其中一个日期调整所有日期(通过添加/减去时区差异)
或者,客户端可以始终显示服务器发送的日期,并且完成
例如,如果你有服务器时区差异,只需在客户端显示它(如果这对你的用例有利,你不需要其他任何东西)
2016-01-03 17:12:00 (+1 GMT)
例如:
在客户端(或服务器,但不是两者)中添加时区差异(+1小时)
例如在服务器中(php DateTime)
$server_date = date('Y-m-d H:i:s');
$client_date = DateTime::createFromFormat( 'Y-m-d H:i:s', $server_date );
$client_date->add( new DateInterval('PT'.(60*60).'S') ) // + 1 hour
$client_date = $client_date->format('Y-m-d H:i:s');
或者在客户端(js使用moment.js或DateX等库)
var client_date = new Date(timestamp(server_date, 'Y-m-d H:i:s')+60*60*1000); // + 1 hour;
// timestamp is supposed to parse the date and return a unix timestamp in milliseconds
// for example if you use DateX, you can do:
// client_date = new DateX(DateX.fromString(server_date,'Y-m-d H:i:s').getTime()+60*60*1000).format('Y-m-d H:i:s');
第三种选择是服务器始终发送UTC(GMT)日期,并让客户端将其转换为本地/时区日期(与上述类似,只有客户端使用自己的时区偏移量,而不是硬编码,例如+1小时)
服务器是您唯一可以控制的机器,因此也是您唯一可以依赖的机器。但要注意夏令时。
我建议将服务器上的所有日期存储为UTC,然后在浏览器中转换为本地时间。这样做也有助于你考虑夏令时的变化,这种变化发生在世界各地的不同时间。
为了说明这一点,如果您在服务器端执行此操作,那么以下C#代码将UTC转换为本地时间,并计入夏令时:
DateTime utc = DateTime.UtcNow;
TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utc, zone);
我知道这是一个PHP问题,但我希望这段代码能有所帮助。
相关文章:
- 如何每10.6秒从时间戳增加+1
- 使用AngularJS从时间戳中获取工作日
- 将时间戳转换为java中的ISO860,
- Javascript Unix时间戳转换
- JavaScript JSON关联对象键和值都作为日期时间戳
- 时间戳与mongoskin如何
- 用时间戳获取两个不同日期之间的时间差
- JavaScript到PHP的时间戳失败,增加了大约一个半月的时间
- 转换unix时间戳转换
- 带有unix时间戳的d3.js平分线
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 生产服务器中的 MomentJS 给了我一个不同的 unix 时间戳
- 如何调整客户端和服务器的时间戳差异
- 如何在客户端(js)和服务器(php)上获得时间戳之间的差异
- JavaScript异步时钟从服务器时间戳
- 我应该如何在服务器端存储来自JS的时间戳,以便我可以可靠地使用它转换为其他时区?
- 使用服务器时间戳进行过滤
- 如何通过grunt-nodemon重新启动node.js服务器时输出时间戳
- 比较客户端时间戳和服务器时间戳
- 如何在不更改文件的情况下将缩小的Javascript文件部署到web服务器's时间戳