1

我有一个页面显示一些信息和它的创建日期(服务器时间)。我需要一些方法来显示服务器和用户时间的日期。

示例:
10 月 26 日 13:48:23(服务器)
10 月 26 日 14:48:23(您的时间)-> 信息

到目前为止我所拥有的:

<?php
    $sql=mysql_query("SELECT * FROM table") or die("Come back later");
    while($row=mysql_fetch_array($sql)) {
        echo date('M, d H:i:s', strtotime ($row['date'])).' -> '.$row['info'];
    }
?>

谢谢你。

编辑: 我认为我没有正确解释这一点。日期存储在数据库中(日期是未来事件的未来点),我想在用户时区显示日期。

例如,第 26 天 12:10:22(服务器时间)将发生一些事情,我想显示转换为用户时间的情况,以使他们更轻松。

编辑 2 示例:我想检测用户时区的差异。

4

4 回答 4

0

PHP是一种服务器语言,所以无法获取用户计算机的时间。如果这不是您的意图,您可以做的是通过 javascript 将这段时间存储在该用户的数据库中。花时间 javascript 很简单:

var date = new Date();
hour = date.getHours();
minutes = date.getMinutes();
seconds = getSeconds();
于 2012-10-26T14:01:35.540 回答
0

我以前从来没有这样做过,老实说,我很难看到你想要做什么,这使得回答它有点困难。尽管如此,我会尝试(以某种方式)回答它,并希望你能填补空白。

服务器时间

要获取服务器时间,请使用 time() 或 date() 函数(还有其他方法,但它们应该足够了)。但是,time() 调用可能会很慢,与其他获取当前时间的函数相同(因为它需要系统调用来获取时间)。您还应该知道,如果脚本在调用之间的执行时间超过 1 秒,它会因调用而异。这会导致一致性问题。一种解决方法是尽可能使用 $_SERVER['REQUEST_TIME'] 并修复可能由主动获取当前系统时间的重复调用 time()、date() 等引起的恒定性错误和速度问题。

客户时间

这必须在 JavaScript 中使用“new Date()”来完成。

在 onload 事件之后(或者更好的是,在 DOM 加载之后)执行一个 ajax 请求来发布 javascript(客户端)时间。然后,处理 AJAX 请求的 PHP 脚本将知道客户端时间和服务器时间(但它不会 100% 准确,因为由于延迟和其他开销,服务器时间总是略早于提供的客户端时间。 ajax 请求本身)。

你的代码

根据我的理解,您想获取用户和服务器时间,然后为该成员保存在数据库中?使用上面的这些解决方案可以让你们俩都受益,但是由于您的问题有点难以理解,我将不得不将其余的实施留给您,一旦您获得它们,您将如何处理这两个日期。

于 2012-10-26T16:27:37.347 回答
0

我建议采用完全不同的方法:

地理位置

您使用用户的 IP 地址来获取用户的时区。好处是如果用户改变国家,他们仍然会看到正确的时间。然而,缺点是有时地理定位会失败。代理也规避了这种定位用户。

在这里阅读它:

或使用 Javascript 将通用时间转换为本地时间

使用 Javascript,您可以通过优雅的降级来实现此功能,这总是一件好事,对吧?理想情况下,您会在特定标签中提供时间(或使用类)

<date>Fri, 26 Oct 2012 20:52:05 +0000</date>
<time>Fri, 26 Oct 2012 20:52:05 +0000</time>

您可以使用您最喜欢的 javascript 库(我在这里使用 jQuery)和标准 Date对象轻松修改它:

$("date").each(function(self) {
    var date = new Date($(this).text());
    $(this).text(date.toLocaleString());
});

$("time").each(function(self) {
    var date = new Date($(this).text());
    $(this).text(date.toTimeString()+
        " ("+date.getHours()+":"+date.getMinutes()+")");
});

这是一个小提琴:http: //jsfiddle.net/FdQRH/

于 2012-10-26T19:19:28.123 回答
0

mysql_*除了您不应该使用函数的事实之外,请参见此处的评论


您可以通过回显显示服务器时间date(),您可以使用客户端浏览器中的 javascript 从客户端时间获取客户端时间new Date()

于 2012-10-26T13:50:31.987 回答