【问题标题】:How to show server and user time in PHP?如何在 PHP 中显示服务器和用户时间?
【发布时间】:2012-10-16 19:01:51
【问题描述】:

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

示例:
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 例子: 我想检测用户时区的差异。

【问题讨论】:

  • 请不要使用mysql_* 函数编写新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果你不能决定哪一个,this article 会帮助你。如果你选择 PDO,here is good tutorial。另见Why shouldn't I use mysql functions in PHP?
  • 服务器日期是否存储在数据库中?
  • 是的,日期存储在数据库中,如示例所示。
  • @NullPointer 你有那个评论作为模板吗!?大声笑
  • 我知道 mysql_* 已经过时了,我不应该使用它,但是我的应用程序已经太大了,现在无法更改。当我有足够的时间时,我会改变一切。感谢您的链接。

标签: php


【解决方案1】:

除了你不应该使用mysql_*函数see comment here这一事实之外


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

【讨论】:

    【解决方案2】:

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

    var date = new Date();
    hour = date.getHours();
    minutes = date.getMinutes();
    seconds = getSeconds();
    

    【讨论】:

    • 我从数据库中获取日期,我想使用用户时区输出它。这意味着我需要一些函数来将日期转换为用户时区 +1、+2 等...
    【解决方案3】:

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

    服务器时间

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

    客户时间

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

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

    您的代码

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

    【讨论】:

      【解决方案4】:

      我建议一种完全不同的方法:

      地理位置

      您使用用户的 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/

      【讨论】:

        猜你喜欢
        • 2013-03-24
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 2017-02-19
        • 2017-05-22
        • 2012-12-22
        • 1970-01-01
        • 2018-01-31
        相关资源
        最近更新 更多