gpt4 book ai didi

php - 比较 PHP 服务器时间与 JavaScript 时间(客户端浏览器时间)

转载 作者:行者123 更新时间:2023-11-28 09:24:52 25 4
gpt4 key购买 nike

我正在制作一个通知系统,需要一定的时间才能发挥作用。

我将此脚本用于 timesince 函数(jQuery):

$.fn.updateSince = function(interval) {
var times = this.map(function(){ return { e: $(this), t: parseInt($(this).html()) }; });

var format = function(t) {
if(t > 86400) {
return Math.floor(t / 86400) + ' days ago';
} else if (t > 3600) {
return Math.floor(t / 3600) + ' hours ago';
} else if (t > 60) {
return Math.floor(t / 60) + ' minute ago';
} else if (t > 50) {
return '50 seconds ago';
} else if (t > 40) {
return '40 seconds ago';
} else if (t > 30) {
return '30 seconds ago';
} else if (t > 25) {
return '25 seconds ago';
} else if (t > 15) {
return '15 seconds ago';
} else if (t > 10) {
return '10 seconds ago';
} else {
return 'a few seconds ago';
}
}
var update = function(){
var now = new Date().getTime();
$.each(times, function(i, o){
o.e.html(format(Math.round((now - o.t) / 1000)));
});
};

window.setInterval(update, interval);
update();
return this;
}

通知存储在MySQL数据库中,每个通知都有一个时间戳,格式如下:2012-12-26 06:21:28

我使用PHP strtotime,并在从数据库获取每个通知项的时间时将其更改为UTC格式:(php)

 $rows['time']= strtotime($temp_time." UTC");

当我使用ajax将其传回客户端浏览器时。我将 UTC 时间(来自数据库)乘以 1000(javascript)

 var time = parseInt(dbtime * 1000);

然后我可以使用 jQuery timesince 函数将其转换为 time ago。

问题:我的服务器时间随客户端浏览器时间而变化。如何使它们彼此“兼容”。

例如,根据客户端浏览器在2小时前发出通知。但 PHP 说它是 7 小时前创建的。因为客户端浏览器时区与我的服务器的时区不同

我的逻辑是:1. [PHP]获取当前时间,并用从数据库获取的通知时间与之相减。数据库时间-当前时间=服务器端时差

  1. [PHP] 然后我们得到一个时差。在本例中为 7 小时。
  2. [PHP] 如何将 7 小时转换为 UTC 格式?
  3. [Javascript] 将当前客户端浏览器时间(同样采用 UTC 格式)发送到 php 脚本。
  4. [PHP] 客户端浏览器时间 - 7 小时(UTC?)= 为 JavaScript 使用而创建的通知的实际时间。
  5. [PHP] 将结果发送回 Javascript ,因此现在客户端浏览器端的时间可以是 2 小时前。

我该怎么做?

仅供引用,UTC 格式类似于(乘以 1000):1314952284779

最佳答案

你的逻辑可能是:

  1. 使用 strtotime(或任何类似函数)将通知时间转换为 UNIX 时间戳
  2. 使用 JavaScript Date 函数和该值(乘以 1000)来重新构建日期
  3. 使用 (new Date) - thatDate 计算差异
  4. 转换为小时、分钟和秒

我在这里看到的问题是在第一步。您提到日期存储为 2012-12-26 06:21:28 但该日期对应的时区是什么?如果它与服务器时区相同,则使用 strtotime("2012-12-26 06:21:28") 足以生成正确的时间戳。

关于php - 比较 PHP 服务器时间与 JavaScript 时间(客户端浏览器时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14534534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com